EntityFramework 6.1自动生成的类:
public partial class STUDENT
{
public STUDENT()
{
this.STUDENT_GROUPS = new HashSet<STUDENT_GROUPS>();
}
public int ID { get; set; }
public int PERSON { get; set; }
...
public virtual ICollection<STUDENT_GROUPS> STUDENT_GROUPS { get; set; }
...
}
和STUDENT_GROUPS:
public partial class STUDENT_GROUPS
{
public int ID { get; set; }
public int GROUPS_GRP { get; set; }
public int STUDENT { get; set; }
public virtual STUDENT STUDENT1 { get; set; }
public virtual GROUPS_GRP GROUPS_GRP1 { get; set; }
}
抛出CA2214:不要在构造函数中调用可覆盖的方法,但由于这是一个自动生成的代码,我想我不应该改变它,我应该如何处理这种情况? 提前致谢
答案 0 :(得分:5)
您发布的代码不会抛出错误,它只是违反了代码分析规则,并且可以正常工作。生成的代码是正确的,并且设计允许延迟加载。您应该禁止对这些文件发出警告。
答案 1 :(得分:1)
在这种情况下,您可以忽略该警告,但如果您想避免它,您可以为每个虚拟属性手动创建一个私有字段(也可以手动设置setter / getter)。然后,在构造函数中,设置私有字段,而不是属性。 这样,你永远不会在de constructor中执行虚拟属性的setter,这就是警告的原因。
答案 2 :(得分:0)
您可以使用“代码分析”属性页中的复选框来关闭Visual Studio项目中生成的代码中的警告:
抑制“生成的代码产生结果”复选框 项目的“分析”属性页面使您可以选择是否 想要查看由代码生成的代码的代码分析警告 第三方工具。 -How to: Suppress Code Analysis Warnings for Generated Code