将EF 4添加/附加方法转换为EF 6

时间:2015-12-11 09:49:36

标签: c# .net entity-framework-4 entity-framework-6 repository-pattern

对于运行EF 4的应用程序,我在存储库基类中使用此方法:

CreateObjectSet

这适用于它运行它的版本,但我正在开始一个使用EF 6的从零开始的新项目。

如何更新上述功能以适应EF 6并且工作原理相同?

我已将Set更改为AddObject,但ObjectStateManager未知。 这样做似乎适用于附加,但我不知道如何替换Makefile

1 个答案:

答案 0 :(得分:2)

IDbSet<T>包含Entry<T>()方法,该方法返回具有读/写DbEntityEntry<T>属性的State

您的代码可以转换为以下内容:

protected void Add<T>(T source, MyEntities context, bool isNew) 
    where T : class
{
    IDbSet<T> set = context.Set<T>();
    if (isNew)
    {
        set.Add(source);
    }
    else
    {
        DbEntityEntry<T> entry = set.Entry(source); 
        if (entry.State == EntityState.Detached)
        {
            set.Attach(source);
            entry.State = EntityState.Modified; 
        }
    }
}