禁止DbContext.ChangeTracker

时间:2016-07-11 12:57:15

标签: c# .net entity-framework code-contracts

我试图通过使用

来删除Entity Framework类和方法的代码合约警告
[assembly: SuppressMessage("Microsoft.Contracts", "Requires", Target = "System.Data.Entity")]
[assembly: SuppressMessage("Microsoft.Contracts", "NonNull", Target = "System.Data.Entity")]

现在我有以下方法:

public static void TestMethod(this DbContext context, EntityBaseClass entity)
{
    Contract.Requires(context != null);
    var tmp = context.ChangeTracker.Entries<EntityBaseClass>();
    // do something
}

这会发出警告:

  

代码合同:在外部可见方法中缺少前提条件。考虑添加Contract.Requires(((System.Data.Entity.DbContext)context).ChangeTracker!= null);用于参数验证。

显然,我可以按照警告告诉我做的事情,但由于ChangeTracker永远不会null,这将是多余的。这就是我将上面显示的SuppressMessage语句添加到AssemblyInfo.cs的原因。抑制在许多其他情况下起作用,但在这一情况下它失败了,我无法弄清楚原因。

以下是我的选择: enter image description here

0 个答案:

没有答案