1

それぞれに関連するc#クラスを持つ2つのエンティティがあります。テーブルAにナビゲーションプロパティを設定して、テーブルBの多くのアイテムへの参照を含めました。新しいテーブルAクラスオブジェクトを作成するときは、テーブルAにテーブルBオブジェクトのコレクションを作成できる必要があります。テーブルAc#クラスでナビゲーションプロパティを設定するにはどうすればよいですか?

データモデル: http://bluewolftech.com/mike/mike/datamodel.jpg

4

1 に答える 1

1

ナビゲーション プロパティは、EF では単純です。以下の例は、ナビゲーション プロパティがどのように見えるかを示しています。

public class Foo
{
    public int FooId { get; set; }
    public string SomeProperty { get; set; }

    public virtual IEnumerable<Bar> Bars { get; set; }
}

はtableAFooBar表し、tableB を表します。ナビゲーション プロパティのキーワードは virtual であり、デフォルトで遅延読み込みを有効にします。これは、EF4.1 Code First を使用していることを前提としています。

編集

私の頭の上から、これはあなたにとって良い開始テンプレートになるはずです:

public class PointOfInterestContext : DbContext
{
    public IDbSet<PointOfInterest> PointOfInterest { get; set; }
    public IDbSet<POITag> POITag { get; set; }
    public IDbSet<Tag> Tag { get; set; }

    public override OnModelCreating(DbModelBuilder modelBuilder)
    {
        // custom mappings go here
        base.OnModelCreating(modelBuilder)
    }
}

public class PointOfInterest
{
    // properties
    public int Id { get; set; }
    public string Title { get; set; }
    // etc...

    // navigation properties
    public virtual IEnumerable<POITag> POITags { get; set; }    
}

public class POITag
{
    // properties
    public int Id { get; set;}
    public int PointOfInterestId { get; set; }
    public int TagId { get; set; }

    // navigation properties
    public virtual PointOfInterest PointOfInterest { get; set; }
    public virtual Tag Tag { get; set; }
}

public class Tag
{
    // properties
    public int Id { get; set; }
    public string TagName { get; set; }
    // etc...

    // navigation properties
    public virtual IEnumerable<POITags> POITags { get; set; }    
}

次に、ビジネス オブジェクトに他のロジックを実装します。エンティティは軽量であると想定されており、多くてもデータ属性を持つ必要があります。ただし、OnModelCreating を介して流暢なマッピングを使用することを好みます。

MSDN
- EF 4.1 Code First
Code First チュートリアル

于 2011-10-06T23:00:09.813 に答える