【问题标题】:SQL Server 2014 MARS error when using Entity Framework使用实体框架时出现 SQL Server 2014 MARS 错误
【发布时间】:2016-03-16 09:51:57
【问题描述】:

我通过添加两个额外的列更改了数据库中的一个表:

DeletedBy NVARCHAR(100)
DeletedOn DATETIME

问题是,当我现在尝试在表中添加或更新一行时,我收到以下错误:

Procedure []: Error occured (207): Invalid column name 'DeletedBy'.\r\nA transaction that was started in a MARS batch is still active at the end of the batch. The transaction is rolled back.

从数据库中删除列可以解决问题。知道可能导致此错误的原因吗?除了将列添加到表中之外,没有进行其他更改。

我正在使用 EF 6

【问题讨论】:

  • 您如何更改数据库以及如何更新模型以反映这些更改?
  • ALTER TABLE myTable ADD COLUMN DeletedBy NVARCHAR(100)
  • 然后我从模型中删除了表格并重新添加了它

标签: .net sql-server entity-framework entity-framework-6


【解决方案1】:

您至少可以尝试几件事。

  • 禁用 MARS 并重试:您是否遇到任何错误?交易 回滚可以掩盖实际错误。如我所见,“DeletedBy”字段不可为空,看起来很奇怪:创建记录时,您打算在该字段中写什么?
  • 通过 Cihan Biyikoglu 检查 MARS, Transactions and SQL Error 3997, 3988 or 3983

【讨论】:

  • 奇怪的是,我保留了之前的 .net 逻辑完全相同,并且工作得非常好。我所做的只是在表中添加了两个额外的列,甚至没有在代码中使用它们,我得到了这个错误
  • SQL Server 默认将这些字段设为空
【解决方案2】:

所以在拔掉我所有的头发后,我发现问题实际上是由我正在更新的桌子上的触发器引起的。禁用触发器,一切都很好。但无论如何,这个错误非常神秘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多