【问题标题】:System.Data.Entity.Infrastructure.DbUpdateException IssueSystem.Data.Entity.Infrastructure.DbUpdateException 问题
【发布时间】:2017-07-07 10:55:20
【问题描述】:

我有一个测试方法来测试一个任务,该任务假设要获得一个任务定义(任务描述)以进行编辑:

[TestMethod]
public void GetTaskDefinitionsForEdit_HavingTaskDefinitions_ReturnsChecklistTaskDefinitions()
{
    // this.CreateChecklistTaskDefinition(referenceKey: "Xxx123", description: "SomeDescription");
    // this.checklistTaskTestHelper.CreateChecklistTaskDefinition(referenceKey: "Yyy234", description: "SomeOtherDescription");

    this.helper.CreateChecklistTaskDefinition(referenceKey: "Xxx123", description: "SomeDescription");
    this.helper.CreateChecklistTaskDefinition(referenceKey: "Yyy234", description: "SomeOtherDescription");

    this.CompanyDbContext.SaveChanges();

    //var result = this.checklistTaskTestHelper.checklistTaskDefinitionRepository.GetTaskDefinitionsForEdit(ChecklistReferenceType.ReconAccountGroup, "Xxx123");

    var result = this.checklistTaskDefinitionRepository.GetTaskDefinitionsForEdit(ChecklistReferenceType.ReconAccountGroup, "Xxx123");

    Assert.AreEqual(1, result.Count);
    //Assert.AreEqual("Xxx123", result[0].ReferenceKey);
    //Assert.AreEqual("SomeDescription", result[0].Description);
}

我还有一个初始化方法:

protected override void Initialize()
{
    this.company = this.CreateCompany("Test company");
    this.checklistTaskDefinitionRepository = this.CreateRepository<ChecklistTaskDefinitionRepository>(this.company);
    this.helper = new ChecklistTaskTestHelper(this.checklistTaskDefinitionRepository, this.checklistTaskStatusRepository);
}

这些在课程的开头:

private Company company;
private ChecklistTaskDefinitionRepository checklistTaskDefinitionRepository;
private ChecklistTaskStatusRepository checklistTaskStatusRepository;
private ChecklistTaskTestHelper helper;

一旦我运行测试方法,它就会打印出来:

测试方法 Core.Data.Test.Modules.Checklists.ChecklistTaskDefinitionRepositoryTest.GetTaskDefinitionsForEdit_HavingTaskDefinitions_ReturnsChecklistTaskDefinitions 抛出异常: System.Data.Entity.Infrastructure.DbUpdateException:更新条目时出错。

【问题讨论】:

  • 环境 DbContext 变量极易出错。之前做了哪些改动,ChangeTracker中有哪些对象,这两个方法做了什么,内部异常是什么?

标签: c# .net entity-framework unit-testing


【解决方案1】:

如果你调试测试,你可以检索内部异常,在这种情况下会给你错误的原因(fk错误,重复pk错误,列不存在,表不存在,数据库不存在) .

要在 Visual Studio 中调试测试,请右键单击测试并单击调试。

【讨论】:

  • 这不是问题的答案,只是一个调试建议。我相信这会更好作为评论
猜你喜欢
  • 1970-01-01
  • 2017-12-10
  • 2023-04-08
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多