我有基于Entity Framework 4的服务类。我想在充满预先生成的样本数据的数据库上测试它们。问题是:我希望测试,无论是通过还是失败,都不会实际触及数据库,以便它可以重新用于其他测试。
因此,我希望ObjectContext.SaveChanges假装一切都很好,并保持内存中的更改,但默默地省略它们在数据源中的实际持久性。这可能吗?
P.S。我知道存储库模式,但在这种情况下不想使用它。
答案 0 :(得分:1)
您只需将测试包装在未提交的事务中:
using(var context = new MyObjectContext())
{
context.Connection.Open();
using (var transaction = context.Connection.BeginTransaction())
{
// Your tests here
...
} // At this point, the transaction is rolled back, since it hasn't been commited
}
答案 1 :(得分:0)
我打算带着这个问题走出去......我知道它适用于linq-to-sql
您可以覆盖上下文/容器中的savechanges方法
并实际删除base.SaveChanges();
看起来像这样:
public override int SaveChanges(SaveOptions options){
return base.SaveChanges();
}
因此,如果您取消注释此行,您可以根据自己的情况进行调整