Я пытаюсь добавить ассоциацию, которой у меня изначально не было. Я понял, что две таблицы технически связаны, и что некоторые свойства навигации могут упростить то, что в противном случае пришлось бы делать вручную. Таблицы и их ключи выглядят так:
Import
Primary Key:
Number : Int32
Date : DateTime
Hour
Primary Key:
DepartmentID : Int32
UserNumber : Int32
Date : DateTime
Ассоциация называется ImportHour. Import.Number сопоставляется с Hour.UserNumber, а Import.Date сопоставляется с Hour.Date. Я пытаюсь добавить ассоциацию, которая равна 0..1 при импорте, и * по часу со свойствами навигации и без дополнительных внешних ключей. Когда я делаю это, дизайнер говорит мне, что связь не отображается. Если я затем генерирую DDL, он создает новые поля Hours.Import_Date и Hours.Import_Number (Hours - это фактическое имя таблицы базы данных для сущности Hour). Если я вручную сопоставлю поля, я получаю следующую ошибку:
Error 3021: Problem in mapping fragments starting at line 332:
Each of the following columns in table Hours is mapped to multiple conceptual side properties:
Hours.Date is mapped to <ImportHour.Hour.Date, ImportHour.Import.Date>
Hours.UserNumber is mapped to <ImportHour.Hour.UserNumber, ImportHour.Import.Number>*
Я не совсем уверен, что происходит, и не думаю, что достаточно хорошо понимаю процесс «картографирования», чтобы понять это. Похоже, что он хочет получить пятикратный ключ вместо того, чтобы понять, что один ключ сопоставляется с другим. Я смотрю на другие ассоциации «один ко многим», и у них даже нет сопоставлений таблиц; Я думаю, что они вместо этого имеют ссылочные ограничения, но вы, очевидно, не можете иметь ссылочные ограничения с ассоциацией 0..1 ко многим.