我正在尝试使用流畅的语法来映射包含父表中的ID的主键以及此表中的ID。举例说明:
Order OrderLine
------------- -------------
OrderID OrderID
OrderDate OrderLineID
Total Product
etc Quantity
(OrderID is the primary key) etc
(OrderID, OrderLineID is the primary key)
OrderLine类具有Order属性(因此没有OrderID属性)。
public class Order public class OrderLine
{ {
public int OrderID { get; set; } public int OrderLineID { get; set; }
public DateTime OrderDate { get; set; } public Product Product { get; set; }
public double Total { get; set; } public int Quantity { get; set; }
}
public virtual Order Order { get; set; }
}
我如何识别OrderLine在其主键中包含订单的ID?
我试过了:
modelBuilder.Entity<OrderLine>().HasKey(ol => new { ol.Order.OrderID, ol.OrderLineID });
但是我收到以下错误:
The properties expression 'ol => new <>f__AnonymousType0`2(OrderID = ol.Order.OrderID, OrderLineID = ol.OrderLineID)' is not valid.
The expression should represent a property:
C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'.
When specifying multiple properties use an anonymous type:
C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New With { t.MyProperty1, t.MyProperty2 }'.
据我从错误消息中可以看出,我使用了正确的语法,但它似乎表明我需要父Order的ID属性作为OrderLine类中的属性 - 这似乎否定了这一点首先在课堂上有一个Order属性。
那么,我是否需要OrderLine类中的显式OrderID属性(即使我已经有一个Order属性),或者我是否在映射中没有正确识别主键?