Entity Framework 6のMVC 5プロジェクトでVisual Studio 2013を使用して、一部のモデルをプロジェクトに追加するために、「ADOエンティティデータモデル」(データベースのコードファースト)を使用しました。この場合、テーブルには関係があります。「CA2214」と「CA2227」のコード警告を解決するには、どのようにモデルをリファクタリングできますか?
モデルウィザードでアプリケーションにコンテキスト&を追加したとき、セカンダリテーブルのコンストラクタでこれらの警告属性が見えました。ここに一つの例があります。
私の質問は、警告がなくなるようにコードをリファクタリングする方法があるかどうかです。これは、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; }
}
}
私はCA2214とCA2227に関するガイダンスについては、MSDNに見えました。間違いなく間違いありませんが、データモデルウィザードで作成時にこれを解決する方法についての指示はありませんでした。
エンティティを参照するナビゲーションプロパティを初期化するため、この属性が追加されています。このエンティティはまだ初期化されていない可能性があります。次にそれを新しい空のオブジェクトに設定します。 Gert Arnoldのこの質問に対する答えを見てください:http://stackoverflow.com/questions/20757594/ef-codefirst-should-i-initialize-navigation-properties – ghg565
おっと...私はそれを読んでいます – ghg565
私はリンクを読んでいます。私はもっと混乱しているだけです。 –