これらは私の簡略化されたドメインクラスです
public class ProductCategory
{
public int ProductId { get; set; }
public int CategoryId { get; set; }
public virtual Product Product { get; set; }
public virtual Category Category { get; set; }
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentCategoryId { get; set;}
}
これは私のマッピングクラスです。しかし機能しません。
public class ProductCategoryMap : EntityTypeConfiguration<ProductCategory>
{
public ProductCategoryMap()
{
ToTable("ProductCategory");
HasKey(pc => pc.ProductId);
HasKey(pc => pc.CategoryId);
}
}
1つの製品を複数のカテゴリで見ることができるように、これらのクラスをどのようにマップする必要がありますか?
2つの区切られたステートメントの代わりに匿名型オブジェクトを使用します。
_ HasKey(pc => new { pc.ProductId, pc.CategoryId});
_
MSDNから: EntityTypeConfiguration.HasKey Method
主キーが複数のプロパティで構成されている場合、プロパティを含む匿名タイプを指定します。たとえば、C#_
t => new { t.Id1, t.Id2 }
_およびVisual Basic .NetFunction(t) New From { t.Id1, t.Id2 }
では。
不満なことに、特にラムダに堪能でない場合は、MSDN VBの例は間違っています...これは 'From'ではなく 'With'である必要があります。
(ありがとう Aki Siponen )