我试图通过使用
来删除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的原因。抑制在许多其他情况下起作用,但在这一情况下它失败了,我无法弄清楚原因。