私はこれでキーボードに頭をぶつけています。基本的に私がやろうとしていることはかなり単純です。
私は EF Power Tools を使用して既存のデータベースをリバース エンジニアリングしました。これを行った主な理由は、問題のデータベースがかなり古く、多くの外部キー、または主キーさえ欠落しているからです。目標は、生成されたモデルにナビゲーション プロパティを追加できるようにすることでした。主に、モデルをクエリするときのコードをよりクリーンにすることです。
現在、2 つのクラスUser
とがありCostCentre
、それぞれのテーブルにマッピングされ、Users
適切CostCentres
な主キーを使用して、 の PK はUsers
でUsername
命名さUserid
れCostCentres
ています。これら 2 つの間の理論上の関係は 1 対 M です (1 人のユーザーが複数の CostCentre を持つことができます)。User
好きなようにナビゲーションプロパティを追加しました
public virtual ICollection<CostCentre> CostCentres { get; set; }
私は単純なデフォルトコンストラクタでリストを初期化しています
public User()
{
CostCentres = new List<CostCentre>();
}
そのCostCentre
ようにユーザープロパティを追加しました
public virtual User User { get; set; }
生成さCostCentreMap
れたクラスでは、ナビゲーションプロパティを次のようにマッピングしました
this.HasRequired(cc => cc.User)
.WithMany(u => u.CostCentres)
.HasForeignKey(cc => cc.Userid);
プロパティを埋めることができないクエリdb.Users
を実行するたびに、ナビゲーションプロパティの種類が機能することを知っています。
db.Users
.Include(u => u.CostCentres);
結果のクエリは、各テーブルの適切な列で適切に結合しますが、そうすると
User user = db.Users
.Include("CostCentres")
.SingleOrDefault(u => u.Username == userName);
プロパティCostCentres
は空のままです。
私はかなり明白な何かを見逃していると確信していますが、バーナビー・ジョーンズの愛のために、私は何を手に入れることができません. どんな助けでも大歓迎です。