Northwind データベースのことを覚えておいてください。それ自体への自己参照を持つ Employee テーブルがあるためです。外部キーの名前は「ReportTo」などで、これは Nullable フィールドです。
EF Code First と MVC3 を使用して、手元のプロジェクトにこのようなテーブルを実装しようとしています。シナリオは次のとおりです。 User の派生元である Man クラスがあります。上記のフィールド「ReportTo」は、後者のクラス(ユーザー)に設定されています。ここにPOCOがあります:
[LocalizedAttribute("ReportTo")]
public long ReportsTo { get; set; }
[ForeignKey("ReportsTo")]
public virtual IList<User> ReportsChild { get; set; }
しかし、EF はデータベースでこのフィールドを「Not Null」として生成しました。?
正確に afterを使用しようとしましたが、エラーが発生するIList<User>
ようです。IList<User>?
また、次のように流暢な API として定義しようとしました。
modelBuilder.Entity<User>().Property(s => s.ReportsChild).IsOptional();
しかし、上記の両方の方法でこのエラーが発生します。
型 'System.Collections.Generic.IList' は、ジェネリック型またはメソッド 'System.Nullable' でパラメーター 'T' として使用するために、null 非許容値型である必要があります。
私はウェブをサーフィンしましたが、私がすでに行ったことと同様の解決策を見つけることができました.
その理由は何ですか?に変更IList<User>
しUser
ても、外部キーとして正しく機能しますか? どうすればこのエラーを乗り切ることができますか?