最初にコードで素晴らしい EF5 を使用しようとしています。ここでは、追加のフィールドを使用して多対多のテーブルを作成する必要があります。
製品テーブル、注文テーブルがあり、「サイズ」フィールドを持つ注文中の製品のテーブルが必要です。
私が行ったことは、それらの間の接続テーブルである「ProductOrder」の新しいクラスを作成し、参照を作成することです。
新しい注文を作成するときは機能しますが、注文をフェッチするときは機能しません-接続された注文(挿入後にDBに存在する)を取得しません。
アイデアはなぜですか?:)
私のクラスは次のとおりです。
public class Order
{
public int ID { get; set; }
...
public ICollection<ProductOrder> Products { get; set; }
public Order()
{
Products = new HashSet<ProductOrder>();
}
}
public class Product
{
public int ID { get; set; }
public ICollection<ProductOrder> Orders { get; set; }
}
public class ProductOrder
{
public int ID { get; set; }
public int ProductID { get; set; }
public int OrderID { get; set; }
public int Size { get; set; }
[ForeignKey("OrderID")]
public Order order { get; set; }
[ForeignKey("ProductID")]
public Product product { get; set; }
}
および onModelCreating で
modelBuilder.Entity<Order>()
.HasMany(p => p.Products)
.WithRequired(o => o.order)
.HasForeignKey(o => o.OrderID);
modelBuilder.Entity<Product>()
.HasMany(o => o.Orders)
.WithRequired(p => p.product)
.HasForeignKey(p => p.ProductID);