0

私はこれでキーボードに頭をぶつけています。基本的に私がやろうとしていることはかなり単純です。

私は EF Power Tools を使用して既存のデータベースをリバース エンジニアリングしました。これを行った主な理由は、問題のデータベースがかなり古く、多くの外部キー、または主キーさえ欠落しているからです。目標は、生成されたモデルにナビゲーション プロパティを追加できるようにすることでした。主に、モデルをクエリするときのコードをよりクリーンにすることです。

現在、2 つのクラスUserとがありCostCentre、それぞれのテーブルにマッピングされ、Users適切CostCentresな主キーを使用して、 の PK はUsersUsername命名さUseridCostCentresています。これら 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は空のままです。

私はかなり明白な何かを見逃していると確信していますが、バーナビー・ジョーンズの愛のために、私は何を手に入れることができません. どんな助けでも大歓迎です。

4

0 に答える 0