#c# #visual-studio-2010 #sql-server-2008 #entity-framework #edmx
#c# #visual-studio-2010 #sql-server-2008 #entity-framework #edmx
Вопрос:
Редактировать: проблема решена в более новых версиях EF. По крайней мере, это то, что я предполагаю, поскольку я недавно создал новый проект и выполнил те же шаги, и все прошло нормально! Спасибо за ваши комментарии и помощь. Ниже я оставляю исходный вопрос нетронутым.
Я впервые использую Entity Framework. У меня странная проблема: у меня есть эта небольшая база данных на SQL Server. Вот схема из management studio:
Как вы можете видеть, все внешние ключи определены. Чтобы сгенерировать модель edmx, я выбрал «Новый элемент -> ADO.NET Модель данных объекта -> Сгенерировать из базы данных». Это то, что я получаю:
Отсутствуют все ассоциации, кроме двух! Это странно, поскольку старый добрый L2S мог распознать их без проблем:
Кто-нибудь может мне помочь это исправить?
Комментарии:
1. Учитывая все время и усилия, которые вы собираетесь потратить на борьбу с этим инструментом и попытки разобраться в нем, вы могли бы написать свои собственные хранимые процедуры и ADO.Net кодируйте и оптимизируйте производительность вашей базы данных. Если это так сложно для такой простой базы данных, представьте, на что это будет похоже в более сложном сценарии.
2. Ну, я никогда раньше не использовал Entities Framework, поэтому подумал, что просто чего-то не хватает. Вы хотите сказать мне, что это действительно так плохо даже для таких простых вещей, как это?
3. Я думаю, что неплохо поэкспериментировать с новой технологией. Но мне вспоминается этот недавний твит Джеффа Этвуда: у нас в #stackexchange есть правило, каждый, кто произносит слова «Entity Framework», должен положить 1 доллар в банку с ругательствами. который был ретвитирован 100 раз на данный момент.
4. Попробуйте удалить все объекты и воссоздать их заново, потому что, когда вы исправляете отношения или переименовываете столбцы, это не обновляет «я не знаю почему», но это всегда происходит со мной
5. убедитесь также, что вы подключены к правильной базе данных, а не к старой
Ответ №1:
Ответ на нашу проблему в этом случае заключается в том, что у нас был уникальный некластеризованный индекс для некоторых первичных ключей — это вызвало проблему для модели EF (но не в Linq2SQL). Изменение индексов на этих ключах на уникальный кластеризованный индекс устранило проблему!
Комментарии:
1. Спасибо за ваш ответ. Я ценю это. Я задавал этот вопрос почти год назад. С этого момента мне каким-то образом удалось решить проблему. EF также обновлен. Таким образом, на данном этапе я не могу проверить, работает ли то, что вы предложили, или нет. Я добавил правку в начало вопроса, чтобы другие не тратили свое время на добавление новых ответов.
2. У нас есть уникальные некластеризованные индексы, и они правильно отображаются в EF 4.2 и более поздних версиях
3. Как кто-то написал в другом ответе, который я нашел на это: «Уникальный индекс допускает 1 нулевое значение, первичный ключ не допускает нулей. Как вы будете сопоставлять значение NULL, когда ничто не равно NULL, даже другой NULL»
Ответ №2:
Вы проверяете опцию «Включить столбцы внешнего ключа в модель»?
(источник:msdn.com )
Комментарии:
1. Извините, что я перезвонил вам поздно. Да, я действительно это сделал. Как вы видите, я получил только две ассоциации, а не все.
2. Не могли бы вы сгенерировать DDL для этих таблиц и опубликовать?
Ответ №3:
Проверьте, выбраны ли у вас в ваших свойствах (в вашем проекте Visual Studio).Net framework 4 для Target Framework .