【发布时间】:2013-02-23 23:55:29
【问题描述】:
我正在尝试对我的通用存储库删除方法进行删除实体集成测试。
这就是我的测试删除方法:
[Test]
public void Delete()
{
// Arrange
var user = new User() { FirstName = "test", LastName = "test" };
var repository = new GenericRepository<User>(_context);
repository.Add(user);
_context.SaveChanges();
// Act
repository.Delete(user);
_context.SaveChanges();
// Assert
var deletedUser = _context.Users.Find(user.UserId);
Assert.Null(deletedUser);
}
当我在 Delete(user) 之后调用 _context.SaveChanges 时,我得到一个 EntityException: 说:“System.Data.EntityException ::“底层提供程序在打开时失败。”
访问我的数据库肯定没有问题,因为我之前做过Add测试,并且我检查了实体是否插入到表中。
什么可能导致这个问题以及为什么这个误导性错误消息?
这是我的 2 个存储库方法添加和删除:
public void Update(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State == EntityState.Detached)
{
DbSet.Attach(entity);
}
dbEntityEntry.State = EntityState.Modified;
}
public void Delete(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State != EntityState.Deleted)
{
dbEntityEntry.State = EntityState.Deleted;
}
else
{
DbSet.Attach(entity);
DbSet.Remove(entity);
}
}
更新
这是内部异常的错误信息:
测试“TLP.DataAccess.UnitTests.GenericRepositoryTests.Delete”失败:System.Data.EntityException:基础提供程序在打开时失败。 ----> System.Data.SqlClient.SqlException : 服务器“LISA\SQLEXPRESS”上的 MSDTC 不可用。
【问题讨论】:
标签: entity-framework