這是一個示例場景。我有一個由以下表格組成的現有數據庫;EF代碼優先:使用中間表將實體映射到現有數據庫
訂單,與現場的OrderId(PK,INT)
產品,與場產品編號(PK,INT),PriceId(FK,INT)
訂單產品,帶字段OrderProductId(PK,int),OrderId(FK,INT),產品編號(FK,INT),OrderingStatus(INT)
價格與現場PriceId(PK,INT)
所有的PK身份。
我的實體是;
public class Order
{
[Key]
public int OrderId { get; set; }
public virtual IList<Product> Products { get; set; }
}
public class Product
{
[Key]
public int ProductId { get; set; }
public string Name { get; set; }
public int OrderingStatus { get; set; }
public virtual Price Price { get; set;}
}
public class Price
{
[Key]
public int PriceId { get; set;}
}
這裏是我的映射; 訂購;
HasMany<Product>(x => x.Products)
.WithMany()
.Map(m =>
{
m.MapLeftKey("OrderId");
m.MapRightKey("ProductId");
m.ToTable("OrdersProducts", "dbo");
});
產品;
Map(m =>
{
m.Properties(p => new
{
p.Name
});
m.ToTable("Products", "dbo");
});
Map(m =>
{
m.Properties(p => new
{
p.OrderingStatus
});
m.ToTable("OrdersProducts", "dbo");
});
HasRequired<Price>(x => x.Price)
.WithMany()
.Map(m => m.MapKey("PriceId"));
Price;
ToTable("Prices", "dbo");
我不能得到這個權利我在上下文中的映射,是有任何人可以幫助我在正確的方向。
我實際上有兩種麻煩在這裏,首先是OrderingStatus到我的中間表的映射,第二我有麻煩連接我的表,即'指定的Schema無效。錯誤:...錯誤0019:我在一個類型中的每個屬性名稱必須是唯一的。屬性名稱'OrdersProductsId'已經定義。'
謝謝,我看清楚了現在,意識到什麼一直是我的問題,從開始。 – Per 2011-04-18 20:13:53