关于c#:如何重构Model以解决代码警告:“CA2214”和“CA2227”?

How can I refactor Model to resolve code warnings: “CA2214” and “CA2227”?

在带有实体框架6的MVC 5项目中使用Visual Studio 2013,我使用"ADO实体数据模型"(代码首先来自数据库)将一些模型添加到我的项目中。在这种情况下,表具有关系。

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

我的问题是,是否有某种方法可以重构代码,使警告不再存在,或者这仅仅是因为实体框架了解数据库优先SQL Server关系,所以我学会忽略的一点?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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; }

    }
}

我查看了有关CA2214和CA2227的MSDN指南。毫无疑问,它是准确的,但没有帮助,因为在数据模型向导创建它时,我没有看到任何关于如何解决这个问题的指令。


这些不是警告,而是添加到代码中以防止生成警告的属性。SuppressMessageAttribute的详细信息。

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