tay*_*onr 60 entity-framework ef-code-first
紧接着我关于嘲笑DbContext的另一个问题.我还有另外一个关于模拟 EF Code First的问题.
我现在有一个更新的方法,如下所示:
if (entity == null)
throw new ArgumentNullException("entity");
Context.GetIDbSet<T>().Attach(entity);
Context.Entry(entity).State = EntityState.Modified;
Context.CommitChanges();
return entity;
Run Code Online (Sandbox Code Playgroud)
Context是我自己的DbContext的接口.
我遇到的问题是,我该如何处理
Context.Entry(entity).State.
我已经介绍了这段代码,当我有一个真实的DbContext作为我的Context接口的实现时,它就可以工作了.但是当我把假的上下文放在那里时,我不知道如何处理它.
DbEntityEntry类没有构造函数,所以我不能在我的伪上下文中创建一个新构造函数.
有没有人在CodeFirst解决方案中嘲弄或伪造DbEntityEntry有什么成功?
或者有更好的方法来处理状态变化吗?
Die*_*hon 94
就像其他情况一样,您需要的是添加额外的间接级别:
interface ISalesContext
{
IDbSet<T> GetIDbSet<T>();
void SetModified(object entity)
}
class SalesContext : DbContext, ISalesContext
{
public IDbSet<T> GetIDbSet<T>()
{
return Set<T>();
}
public void SetModified(object entity)
{
Entry(entity).State = EntityState.Modified;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您只需致电,而不是调用实现SetModified.
| 归档时间: |
|
| 查看次数: |
16131 次 |
| 最近记录: |