Я уже прочитал Проблемы сопоставления One-to-One Entity Framework , и это не повторяется, поскольку спецификации бизнес-правил здесь иные.
Есть две таблицы: Счета-фактуры и Заказы.
Invoices
-> InvoiceID (Primary, Auto Number)
Orders
-> OrderID (Primary, Auto Number)
-> InvoiceID (FK InvoiceID of Invoices Table)
Теперь проблема в том, что EF требует отношения «один ко многим» для этой ассоциации, если имена свойств не совпадают.Если имена свойств совпадают, то это служит цели производного класса, но здесь Order не является производным классом или счетом.
InvoiceID (ы) генерируются для каждой корзины покупок, но OrderID (ы) генерируются только дляоплаченные счета, поэтому у каждого заказа есть InvoiceID, но у каждого заказа нет соответствующего счета-фактуры.
Если я создаю для этого отдельную таблицу, то я должен написать слишком много кода, чтобы сделать это.Можно ли как-нибудь снять это ограничение и позволить EF по-прежнему обрабатывать мою модель.
Однако в настоящее время, если я изменяю модель следующим образом, она работает
Invoices
-> InvoiceID (Primary, Auto Number)
Orders
-> OrderID (Auto Number)
-> InvoiceID (Primary, FK InvoiceID of Invoices Table)
Но это хорошая практика??Потому что по определению InvoiceID таблицы Orders, безусловно, будет уникальным, но мы будем ссылаться везде на OrderID для сравнения и множества других ссылок.Я знаю, что могу проиндексировать свойство, но я не чувствую, что этот дизайн идеален.