У меня есть следующая ситуация между этими тремя таблицами:
![alt text](https://i.stack.imgur.com/D8IAJ.png)
Прежде чем я начну объяснять, что я пытаюсь сделать здесь, позвольте мне прояснить три вещи:
Я нарисовал модель на EntityFramework, но на самом деле это представление базы данных. Просто предположим, что тип полей совпадает между таблицами;
Я знаю, что эта модель базы данных отстой. Но об изменении этого вопроса не может быть и речи. Я знаю, что это облегчит мою жизнь.
Я использую Visual Studio 2008 и .Net 3.5 для этого проекта. Но я также принимаю решения на основе Visual Studio 2010 и .Net 4.0.
Итак, как я пытался продемонстрировать на картинке выше, в этом проекте, над которым я работаю, я получил эти 3 таблицы. Один из них, TransactionLine , связывает файл со строкой транзакции, которая является частью полной транзакции.
Теперь я пытаюсь связать здесь TransactionLine и File . Однако TransactionLine не имеет поля FileId из таблицы File . Поля FileNumber и FileType из этой таблицы обозначают составной ключ для File . И действительно, File FileNumber и FileType никогда не повторяются. Они могут быть первичным ключом, но опять же, я не могу коснуться структуры базы данных.
Я пытаюсь связать TransactionLine и Файл путем создания Ассоциации От одного ко многим из Файл в TransactionLine . После этого я выбираю Ассоциация и переключаюсь на экран Сведения о сопоставлении , затем выбираю Карты на TransactionLine .
Данные, которые он просит заполнить на экране модели:
- Файл 1077 * FILEID ;.
- TransactionLine 1083 * TransactionID ;.
- TransactionLine 1089 * Номер_файла ;.
- TransactionLine . FileType
Все скалярные свойства TransactionLine задаются соответствующими им полями базы данных, которые имеют одно и то же имя. Но когда я собираюсь указать связь с таблицей File , единственное скалярное поле, которое я могу указать, это FileId , которого у меня нет на TransactionLine Таблица.
Я также пытался установить File s FileNumber и FileType флаг ключа сущности скалярных свойств в значение true и FileId флаг сущности в false, но безуспешно, так как программа предупреждает меня, что база данных FileId является первичным ключом, но не установлена как единица на сущности.
Можно ли связать TransactionLine FileNumber и FileType с File ? Есть ли обходной путь для этой ситуации?
Специальное примечание: FileId действительно является первичным ключом для File . Другие таблицы связаны с этим полем. TransactionLine здесь является исключением из правила здравого смысла. (