C# 未保存DataService SaveChanges

C# 未保存DataService SaveChanges,c#,entity-framework,C#,Entity Framework,我将数据服务与EntityFramework 6一起使用 我试图调用SaveChanges,但ObjectState是“未更改”而不是“已添加” 我在查询和检索数据方面没有问题,但由于某种原因,Insert或Update不起作用,因为ObjectState不起作用 代码: 其中LiveData是通过数据服务提供的DbContext 我正在使用来自的通用EF6 UOW存储库模式 问题是SyncObjectStatePreCommit()和SyncObjectStatePostCommit()中的状

我将数据服务与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);
            }
        }