У меня есть комментарий и вопрос.Entity Framework 4.0 не показывает таблицу связывания в соотношении «многие ко многим» между двумя таблицами, как, например, в Northwind для «Order_Details», таблицы связи между заказами и продуктами, если используются только два столбца, оба первичных ключав таблице ссылок, как это часто бывает.Таким образом, в Northwind, если вы используете в качестве первичных ключей и OrderID, и ProductID в таблице связей Order_Details между заказами и продуктами, для отношения многие ко многим таблица связи не будет отображаться, если присутствуют только эти два столбца (первичные ключи)в Order_Details.
Следовательно, вы не можете вставить или создать в таблице связей многие-многие, потому что Entity Framework 4.0 не показывает таблицу связей Order_Details, а Intellisense не показывает эту таблицу связей многих-многихотношения.Как сделать вставку или обновление в таблице ссылок, если EF 4 не показывает скрытую таблицу ссылок?Аргументы типа «теперь надо думать в ООП» меня не впечатляют.SQL имеет определенную структуру, и ООП - это всего лишь интерфейс для него, поэтому мы можем использовать LINQ-to-entity, а не неуклюжие запросы SQL, IMO.
Уловка, позволяющая обойти эту ошибку, была предложена для Silverlight здесь,http://forums.silverlight.net/t/159414.aspx/1, и это работает для веб-сервисов и любого другого решения .NET: просто добавьте в таблицу ссылок фиктивный столбец любого типа.
Теперь удалите исходный файл .edmx иперестройте новый, сгенерировав его для фактической базы данных.
Затем intellisense показывает таблицу связывания, а затем вы можете вставить / создать и выполнить другие обычные операции.
Например, Intellisense в EF4.0 теперь покажет таблицу связывания Order_Details, и вы можете создавать или вставлять, такие как (частичный фрагмент, исключая try / catch и любые параметры отката):
using (aDBEntity context = new aDBEntity())
Order_Details newOrdDetails = new Order_Details();
newOrdDetails.OrderID = //some number here
newOrdDetails.ProductID = //some number here
context.AddToOrder_Details(newOrdDetails);
context.SaveChanges();
Вопрос: это отсутствие показа множестватаблица ссылок ко многим - ошибка или особенность EF 4.0?