Entity Framework 4.1 - Индексы внешних ключей? - PullRequest
0 голосов
/ 04 апреля 2011

Сначала я использую код EF 4, и у меня здесь чертовски много времени. Я получаю сообщение об ошибке:

{"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."}

Рассмотрим следующий код. Если я закомментирую поля идентификатора внешнего ключа, он создаст свое собственное и будет работать, но если я этого не сделаю, я получу ошибку.

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

Так что мне интересно несколько вещей:

Должен ли я создать внешний ключ собственность и навигация имущество? Я просто создаю навигационное свойство на ребенка объект? Я просто создаю свойство навигации у родителя объект

У кого-нибудь есть идеи? Спасибо !!

1 Ответ

1 голос
/ 04 апреля 2011

Вам не нужно создавать свойство навигации с обеих сторон, но вы должны создать его хотя бы с одной стороны , чтобы создать связь в базе данных.

Также вам не нужно использовать свойство для внешнего ключа. Это свойство отличается между независимым и внешним ключом . Просто скажите, что использование свойства внешнего ключа противоречит идее ORM, но значительно упрощает жизнь с EF.

Интересна часть с комментированием FK. Можете ли вы проверить в базе данных, что отношения созданы и как они настроены (каскадное удаление)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...