У меня есть 2 связанных объекта, но устаревшая схема sql по существу имеет 2 ключевых столбца для одной и той же таблицы (а не ключ из 2 столбцов: см. ниже). Мне нужно создать отношение обратно к столбцу «фальшивый ключ». Есть ли способ сделать это декларативно в Entity Framework 4.1?
Public Class Client
Inherits ModelBase
<Key(), Required()>
Public Property ClientID As Decimal
<Required(), StringLength(50)>
Public Property ClientCode As String
........
Public Class ClientLocation
Inherits ModelBase
........
<Required(), StringLength(50)>
Public Property ClientCode As String
........
<ForeignKey("ClientCode")>
Public Overridable Property Client As Clients.Client
И ошибка, которую я получаю:
* Во время создания модели были обнаружены одна или несколько ошибок проверки: System.Data.Edm.EdmAssociationConstraint: : типы всех свойств в зависимой роли ссылочного ограничения должны совпадать с соответствующими типами свойств в основной роли. Тип свойства ClientCode объекта ClientLocation не соответствует типу свойства ClientID объекта Client в реляционном ограничении ClientLocation_Client*.
Потому что он думает, что я пытаюсь сопоставить ClientLocation.ClientCode > Client.ClientID, хотя на самом деле я пытаюсь сопоставить ClientLocation.ClientCode > Client.ClientCode...
Есть предположения?
Спасибо!
Client.ClientCode
является столбцом с уникальным индексом в базе данных? Или что такое 2 ключевых столбца... но не составной ключ? И вы хотите каким-то образом сопоставитьClientLocation.Client
с этим уникальным столбцомClient.ClientCode
? - person Slauma   schedule 24.08.2011ClientCode
это обычная колонка. Уникальность просто случайно обеспечивается бизнес-логикой. Боюсь, что ответ Ладилава будет последним словом. - person Slauma   schedule 25.08.2011