实体框架4.1 - 外键索引?
问题描述:
我首先使用EF 4代码,而且我在这里有一段时间。我不断收到错误:实体框架4.1 - 外键索引?
{"Introducing FOREIGN KEY constraint 'SalesRepresentative_SalesOrders' on table 'SalesOrders' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors."}
考虑下面的代码。如果我注释掉外键ID字段,它会生成它自己的并且它能正常工作,但是如果我不这样做,那么我会得到错误。
Public Class SalesOrder
Inherits EntityBase(Of SalesOrder)
#Region "Members/Properties"
Public Property ID As Integer
'Public Property CustomerID As Integer
'Public Property CustomerLocationID As Integer
'Public Property SalesRepresentativeID As Integer
'Public Property SalesOrderStatusID As Integer
Public Overridable Property Customer As Customer
Public Overridable Property CustomerLocation As CustomerLocation
Public Overridable Property Items As ICollection(Of SalesOrderItem)
Public Overridable Property Status As SalesOrderStatus
Public Overridable Property SalesRepresentative As SalesRepresentative
#End Region
End Class
Public Class SalesRepresentative
Inherits EntityBase(Of SalesRepresentative)
#Region "Members/Properties"
Public Property ID As Integer
Public Property FirstName As String
Public Property LastName As String
Public Overridable Property Customers As ICollection(Of Customer)
Public Overridable Property SalesOrders As ICollection(Of SalesOrder)
#End Region
End Class
所以我想知道的几件事情:
我一定要建立外键 属性和导航 财产?我是否只需在子对象 上创建 导航属性?我是否只需在父 对象上创建 导航属性?
任何人有任何想法?谢谢!!
答
您不必在两边都创建导航属性,但必须创建导航属性at least on one side才能在数据库中创建关系。
此外,您不必使用属性作为外键。此属性在independent and foreign key association之间不同。只要说使用外键属性反对ORM的想法,但它使得与EF的生活更容易。
评论FK的部分很有趣。您能否在数据库中验证关系是否已创建以及它们如何配置(级联删除)?
我更喜欢“指数”......但那只是我。 :) – xanadont 2011-04-04 05:49:13