C# 未保存DataService SaveChanges
我将数据服务与EntityFramework 6一起使用 我试图调用SaveChanges,但ObjectState是“未更改”而不是“已添加” 我在查询和检索数据方面没有问题,但由于某种原因,Insert或Update不起作用,因为ObjectState不起作用 代码: 其中LiveData是通过数据服务提供的DbContext 我正在使用来自的通用EF6 UOW存储库模式 问题是SyncObjectStatePreCommit()和SyncObjectStatePostCommit()中的状态是“未更改的”: 若我手动(调试)将状态从“未更改”更改为“已添加”,它会将记录添加到数据库中C# 未保存DataService SaveChanges,c#,entity-framework,C#,Entity Framework,我将数据服务与EntityFramework 6一起使用 我试图调用SaveChanges,但ObjectState是“未更改”而不是“已添加” 我在查询和检索数据方面没有问题,但由于某种原因,Insert或Update不起作用,因为ObjectState不起作用 代码: 其中LiveData是通过数据服务提供的DbContext 我正在使用来自的通用EF6 UOW存储库模式 问题是SyncObjectStatePreCommit()和SyncObjectStatePostCommit()中的状
我花了2天的时间在这个问题上,仍然不知道会出现什么问题。看看SyncObjectsStatePreCommit中实际发生了什么,我可以想象它会将ChangeTracker中任何实体的状态设置为未更改。
AddToCustomerNotes
的代码是什么?听起来您正在附加实体,而没有添加它。tschmit007,它将实体添加到上下文中,然后使用SaveChanges进行保存。它是数据服务,而不是直接的上下文保存。
public void AddCustomerNote(CustomerIssueModel data)
{
if (data.CustomerNote != null)
{
CustomerNote cn = CustomerNote.CreateCustomerNote(0, "test", 1, false, false, DateTime.Now, DateTime.Now, data.CustomerNote.CustomerId);
ClientRepositories.LiveData.AddToCustomerNotes(cn);
ClientRepositories.LiveData.SaveChanges();
}
}
public override int SaveChanges()
{
SyncObjectsStatePreCommit();
var changes = base.SaveChanges();
SyncObjectsStatePostCommit();
return changes;
}
private void SyncObjectsStatePreCommit()
{
foreach (var dbEntityEntry in ChangeTracker.Entries())
{
dbEntityEntry.State = StateHelper.ConvertState(((IObjectState)dbEntityEntry.Entity).ObjectState);
}
}
public void SyncObjectsStatePostCommit()
{
foreach (var dbEntityEntry in ChangeTracker.Entries())
{
((IObjectState)dbEntityEntry.Entity).ObjectState = StateHelper.ConvertState(dbEntityEntry.State);
}
}