C# 为什么我的数据库不使用EF保存?
我正在使用EF更新我的数据库 我首先根据一些条件查询数据库。这将返回我期望的记录(或返回null)。当然,在这个查询过程中,执行查询时会有一点延迟 然后,我将一个属性(在本例中为可空布尔值)从false更改为true,或者创建一个新条目 然后将此对象添加到实体中,最后选择myEntitiy.SaveChanges()。这似乎不起作用。刻不容缓。但是代码会传递到下一行,因此不会引发异常 这就是我所拥有的C# 为什么我的数据库不使用EF保存?,c#,entity-framework,C#,Entity Framework,我正在使用EF更新我的数据库 我首先根据一些条件查询数据库。这将返回我期望的记录(或返回null)。当然,在这个查询过程中,执行查询时会有一点延迟 然后,我将一个属性(在本例中为可空布尔值)从false更改为true,或者创建一个新条目 然后将此对象添加到实体中,最后选择myEntitiy.SaveChanges()。这似乎不起作用。刻不容缓。但是代码会传递到下一行,因此不会引发异常 这就是我所拥有的 public class MyCompany : AbstractCompany {
public class MyCompany : AbstractCompany
{
public override bool UpdateStatus(string emailAddress, bool isOptIn)
{
var personDetail = (from a in base.Entities.MyCompanyTable
where a.EmailAddress == emailAddress
select a).SingleOrDefault();
if (personDetail == null)
{
personDetail = new MyCompanyTable();
personDetail.EmailAddress = emailAddress;
}
personDetail.IsSubscribed = isOptIn;
base.Entities.MyCompanyTable.Add(personDetail); //also tried attach, same issue over
return base.SaveData();
}
}
我的基础课是
public abstract bool UpdateStatus(string emailAddress, bool isOptIn);
protected Entities Entities
{
get { return new Entities(); }
}
protected bool SaveData()
{
var x = Entities.GetValidationErrors();//returns 0 items
try
{
Entities.SaveChanges();
return true;
}
catch (Exception e)
{
return false;
}
}
我做错了什么?实体框架使用更改跟踪来检测当前上下文中任何实体中的更改 但是,
实体
属性每次调用时都会实例化上下文的新实例。因此,当您查询时,您使用一个上下文,然后当您保存时,您使用另一个上下文!EF无法检测到您做了任何更改
最好在基类的构造函数中实例化您的上下文:
public abstract class BaseClass
{
protected BaseClass()
{
Entities = new Entities();
}
protected Entities Entities { get; private set; }
}
实体框架使用变更跟踪来检测当前上下文中任何实体的变更 但是,
实体
属性每次调用时都会实例化上下文的新实例。因此,当您查询时,您使用一个上下文,然后当您保存时,您使用另一个上下文!EF无法检测到您做了任何更改
最好在基类的构造函数中实例化您的上下文:
public abstract class BaseClass
{
protected BaseClass()
{
Entities = new Entities();
}
protected Entities Entities { get; private set; }
}
那应该会解决的