それぞれに関連するc#クラスを持つ2つのエンティティがあります。テーブルAにナビゲーションプロパティを設定して、テーブルBの多くのアイテムへの参照を含めました。新しいテーブルAクラスオブジェクトを作成するときは、テーブルAにテーブルBオブジェクトのコレクションを作成できる必要があります。テーブルAc#クラスでナビゲーションプロパティを設定するにはどうすればよいですか?
データモデル: http://bluewolftech.com/mike/mike/datamodel.jpg
それぞれに関連するc#クラスを持つ2つのエンティティがあります。テーブルAにナビゲーションプロパティを設定して、テーブルBの多くのアイテムへの参照を含めました。新しいテーブルAクラスオブジェクトを作成するときは、テーブルAにテーブルBオブジェクトのコレクションを作成できる必要があります。テーブルAc#クラスでナビゲーションプロパティを設定するにはどうすればよいですか?
データモデル: http://bluewolftech.com/mike/mike/datamodel.jpg
ナビゲーション プロパティは、EF では単純です。以下の例は、ナビゲーション プロパティがどのように見えるかを示しています。
public class Foo
{
public int FooId { get; set; }
public string SomeProperty { get; set; }
public virtual IEnumerable<Bar> Bars { get; set; }
}
はtableAFoo
をBar
表し、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 を介して流暢なマッピングを使用することを好みます。