【问题标题】:System.Data.EntityException :: "The underlying provider failed on Open." in integration testSystem.Data.EntityException ::“底层提供程序在打开时失败。”在集成测试中
【发布时间】: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


    【解决方案1】:

    查看 EntityException 的 InnerException 属性。这将为您提供有关打开失败原因的详细信息。

    【讨论】:

    • 对不起克雷格,我以为我把所有东西都贴上了。我现在已经用所有信息更新了我的初始化问题。
    • 几天前我已经遇到了这个问题:stackoverflow.com/questions/14989797/… 解决方案有效,但现在我没有将字符串或名称传递给我的上下文基类,而是使用约定,这是完全合格的我的上下文的类名,它放在 app.config 文件中连接字符串的 name 属性中,就像这样: 正如我所说的 Add 方法仅适用于 Delete 方法,但这与 MSDTC 有什么关系?
    • 好吧谷歌搜索了很多,然后在单元测试中删除我的 Transactionscope 解决了这个问题。我认为在测试之前从所有数据中清理表格也可以。因此,这个问题可以结束了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多