2014-09-24 50 views
1

我在实体框架代码优先执行单元测试时遇到问题。我一直在使用这个Microsoft博客 http://msdn.microsoft.com/en-us/data/dn314431.aspx作为指导,并且我已经设法完美地实现了一切,并且具有在示例中指定的 操作的操作(插入,查询)。我有问题,但是,与更新操作。我的方法包含以下行:使用EF Entry实现单元测试?

ctx.Entry(ws).Property(w => w.IsDeleted).IsModified = true; 

这是负责标记属性为修改。问题是我的上下文不支持作为DbEntityEntry一部分的Entry方法的实现,也不知道如何模拟我的测试方法中的更新。

我正在使用Rhino Mocks进行测试。

+0

也许你需要将ctx转换为DbEntityEntry?像这样:((DbEntityEntry)ctx).Entry(ws)...等。 – 2014-09-24 21:44:46

+0

我的问题是在一个新的上下文中执行 – 2014-09-24 21:58:51

+0

欢迎来到SO。不要求人们阅读链接教程,最好将链接中的相关信息粘贴到问题中。否则,这个问题是没有意义的,除非有人点击并自己找到所有相关信息。你会更容易运气。 – 2014-09-24 22:11:29

回答

2

用这个问题挣扎了一下。对我来说最好的解决方案是提高间接水平(this thread on SO的回答)。 的想法是以下几点:

ctx.Entry(ws).Property(w => w.IsDeleted).IsModified = true; 

转化为类似电话:

ctx.SetModified(ws); 

... 
// Real context implementation 
public void SetModified(object entity) 
{ 
    this.Entry(entity).State = System.Data.Entity.EntityState.Modified; 
} 

,你可以做任何你需要在你的模拟实现“更新”的实体。祝你好运单元测试的EF代码;)