私はEntity Framework 4.1を使用しており、以下をマッピングしたいと考えています。
Car
- Car_ID
- Name
- Created
Part
- Part_ID
- Car_ID
- Name
- Created
したがって、「車」は 0 個以上のパーツを持つことができます。また、部品は車に関連付ける必要があります。
public class Car
{
[Key]
[Column("Car_Id")]
public int Id {get;set;}
..
..
public ICollection<Parts> Parts { get; set; }
}
public class Part
{
[Key]
[Column("Part_Id")]
public int Id {get;set;}
..
..
public Car Car { get; set; }
}
私のコンテキストは次のようになります。
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new CarConfiguration());
modelBuilder.Configurations.Add(new PartConfiguration());
}
}
public class CarConfiguration : EntityTypeConfiguration<Car>
{
public DealerDemoEnrollmentConfiguration()
{
this.ToTable("Cars", SchemaName);
this.HasKey(x => x.Id);
this.HasMany(x => x.Parts);
}
}
public class PartConfiguration : EntityTypeConfiguration<Part>
{
public DealerDemoEnrollmentConfiguration()
{
this.ToTable("Parts", SchemaName);
this.HasKey(x => x.Id);
this.HasRequired(x => x.Car);
}
}
車を「マスター」エンティティにしたいので、パーツを追加したい場合は、次のことを行う必要があります。
car.Add(部分);
パーツはデフォルトで遅延ロードされますか、それとも車をロードするたびにすべてのパーツがロードされますか? 明示的にすべてのパーツが必要でない限り、デフォルトで遅延ロードされるようにします。
学習目的で、#1 が必要ない場合、つまり、次のことができるようになりたい場合はどうすればよいでしょうか。
part.Car = car // パーツを保存、つまりパーツなしで保存