在带有Entity Framework 6的MVC 5项目中使用Visual Studio 2013,我使用了“ ADO Entity Data Model”(数据库中的Code First)向我的项目中添加了一些模型。在这种情况下,表具有关系。

当完成模型向导向应用程序中添加模型和上下文时,我在辅助表的构造函数中看到了这些警告属性。这是一个例子。

我的问题是,是否有某种方法可以重构代码以使警告不再存在,或者由于Entity Framework理解数据库优先SQL Server关系的方式而使我仅仅是学会忽略这一点?

public partial class StudentList
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",
            "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public StudentList()
    {
        CreditSlipLogs = new HashSet<CreditSlipLog>();
    }

    // ... code

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",
            "CA2227:CollectionPropertiesShouldBeReadOnly")]

    public virtual ICollection<CreditSlipLog> CreditSlipLogs { get; set; }

    }
}


我在MSDN上寻求有关CA2214CA2227的指导。尽管毫无疑问是准确的,但它并没有帮助,因为当由数据模型向导创建该方法时,我没有看到有关如何解决此问题的任何说明。

最佳答案

这些不是警告,它们是添加到代码中的属性,以防止生成警告。 Details for SuppressMessageAttribute

由于EF处理延迟加载的方式,生成的代码将触发这些警告,因此他们将这个属性添加到类模板中,因此您不会收到构建警告。

关于c# - 如何重构模型以解决代码警告:“CA2214”和“CA2227”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38000990/

10-10 03:09
查看更多