对于运行EF 4的应用程序,我在存储库基类中使用此方法:
CreateObjectSet
这适用于它运行它的版本,但我正在开始一个使用EF 6的从零开始的新项目。
如何更新上述功能以适应EF 6并且工作原理相同?
我已将Set
更改为AddObject
,但ObjectStateManager
未知。
这样做似乎适用于附加,但我不知道如何替换Makefile
。
答案 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;
}
}
}