我正在使用带有EntityFramework 6的DataServices。
我试图调用SaveChanges,但ObjectState是"未更改"而不是"已添加"。
我没有查询和检索数据的问题,但插入或更新由于某种原因不起作用,因为ObjectState无法正常工作。
代码:
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();
}
}
LiveData是通过数据服务的DbContext。
我使用来自https://genericunitofworkandrepositories.codeplex.com/
的通用EF6 UOW存储库模式问题是国家是不变的"在SyncObjectStatePreCommit()和SyncObjectStatePostCommit()中:
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);
}
}
如果我手动(调试)将状态改为"添加"来自"未改变"它为数据库添加了记录。
我花了2天时间,仍然没有看到可能出现的问题。