DataService SaveChanges未保存

时间:2015-10-19 16:34:35

标签: c# entity-framework

我正在使用带有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天时间,仍然没有看到可能出现的问题。

0 个答案:

没有答案