Извините, я не очень хорошо говорю на EF, просто настроив свой первый EF-проект. Я привык работать с Linq-to-SQL как способ избежать запросов SQL, и он хорошо работал с некоторыми веб-сервисами WCF, которые я использовал. Все это в Microsoft Visual Studio 2010.
Теперь на этом фоне я создал базу данных, используя Servr, которая имеет таблицы A и B в отношениях «многие ко многим» с таблицей C. Поскольку это недопустимо в теории баз данных, я создал таблицу связывания, как хорошо известно. Два из них: один с именем A_C, а другой с именем B_C, каждый из которых имеет внешний ключ (от 1 до многих) из таблиц A и B соответственно. Затем я связал таблицу C t с обеими этими таблицами связи, и эти таблицы связи получили внешний ключ от C. Так что теперь я в порядке, подумал я.
Поэтому я создаю модель данных сущности ADO.NET, используя мастер модели данных сущностей, я выбрал опцию «из существующей базы данных» и нажимал кнопки. К моему большому удивлению, и огорчению, и потрясению, и страху, я увидел ТОЛЬКО ТРИ ТАБЛИЦЫ: A, B и C! Нет ссылок на таблицы вообще. Они шутят?
Подумайте об этом на мгновение. Механизм, который запускает EF, выяснил, что таблицы A и B имеют отношение «многие ко многим» с таблицей C. На диаграмме схемы файла .edmx между звездочками A, B и C показаны звездочки, как и ожидалось. .
НО ТАБЛИЦЫ СВЯЗИ В СХЕМЕ НЕ ПОКАЗЫВАЮТСЯ! Какие? Это очень логично, я полагаю, не показывать таблицы ссылок ... но неожиданно.
Является ли это вашим опытом для тех, кто когда-либо имел отношения ко многим за столом?
Кстати, до того, как я нажал клавишу Send, я провел много исследований по EF 4.0, и мне кажется, что эта работа еще не завершена. Много подводных камней, в которые я, вероятно, попаду. Например, я намереваюсь развернуть это в решении REST WCF, которое использует веб-методы, которые работают с базой данных SQL Server. В прошлом я использовал Linq-to-SQL, и теперь я буду осторожно пытаться использовать Linq-to-Entities.