5

Entity Framework Database First を使用していますが、Code First パラダイムから次の動作を再現したいと考えています。

Entity Framework Code First では、次の行に沿って何かを行うことができます。

public class Thing
{
    public int ID { get; set; }
    ICollection<Stuff> Stuffs { get; set; }
}

public class Stuff
{
    public int ID { get; set; }
    ICollection<Thing> Things { get; set; }
}

データベースは、多対多の関係を表す連想テーブルを生成します。

従来のデータベースで Database First を使用しています。エンティティを取り込んだところ、2 つのテーブル間の多対多の関係を表す連想テーブルが含まれていました。

連想テーブルはエンティティとして含まれているため、ナビゲーション プロパティは次のようになります。

public class Thing
{
    public int ID { get; set; }
    public ICollection<ThingStuff> ThingStuffs { get; set; }
}

public class ThingStuff
{
    public int ThingID { get; set; }
    public int StuffID { get; set; }
    ICollection<Thing> Things { get; set; }
    ICollection<Stuff> Stuffs { get; set; }
}

public class Stuff
{
    public int ID { get; set; }
    public ICollection<ThingStuff> ThingStuffs { get; set; }
}

ナビゲートするには、次のことを行う必要があります。

var stuff = Thing.ThingStuffs.Select(ts => ts.Stuff);

それ以外の:

var stuff = Thing.Stuffs;

質問は次のとおりです。

アソシエーション (ThingStuff) を表すエンティティを削除し、EntityFramework に既存のテーブルについて通知して、多対多のナビゲーション プロパティを作成する方法はありますか?

4

1 に答える 1