Создание AssociationSetMapping для MySQL с помощью Entity Framework Designer?

Я пытаюсь построить модель Entity Framework для своей схемы базы данных, используя EF4 и Visual Studio 2010. Поскольку я застрял с использованием MySQL в качестве нашей базы данных (на данный момент), я довольно быстро обнаружил, что, поскольку таблицы MYISAM не поддерживают ограничения внешнего ключа, у дизайнера нет возможности автоматически создавать все ассоциации за вас. Достаточно легко просмотреть модель и построить их все вручную, но я столкнулся с проблемой, пытаясь отобразить чистую таблицу соединений.

Обычно, если вы используете SQL Server или какую-либо другую базу данных, поддерживающую внешние ключи, дизайнер создаст для вас все сопоставления, а в случае чистых таблиц соединения создаст сопоставление AssociationSetMapping, так что таблица соединения будет полностью скрыта в модели. Вместо этого вы получаете сопоставление «многие ко многим» между двумя двумя первичными объектами.

Однако я не понимаю, как создать такое сопоставление вручную? Если я создам ассоциацию «многие ко многим» между двумя моими сущностями, я получу обычную ассоциацию, а не ассоциативное сопоставление. Кажется, нет способа создать один из них в дизайнере, чем я могу понять, и указать, какая таблица соединений должна использоваться на уровне базы данных.

Я что-то упустил, и есть ли способ сделать это?

Если нет, то я полагаю, что мне нужно взломать XML напрямую, но на данный момент не ясно, что мне нужно добавить в файлы XML и где, чтобы вручную создать сопоставление набора ассоциаций?


person Kendall Bennett    schedule 09.09.2010    source источник


Ответы (1)


Хорошо, я могу ответить на этот вопрос сам. Как только вы создадите ассоциацию «многие ко многим» с помощью конструктора, вы НЕ устанавливаете для нее реляционное ограничение, а скорее используете окно «Сведения о сопоставлении», чтобы сообщить ассоциации, какая таблица является таблицей соединения, и какие ключи сопоставляются с какими полями в таблице. база данных. Достаточно просто, как только я понял это :) Но я не смог найти хорошей документации по этому вопросу.

person Kendall Bennett    schedule 10.09.2010