6

Я использую VS 2013 и SQL Svr 2012 и пытаюсь использовать EF для заполнения gridview. Поскольку это очень простой тест, у меня есть только одна таблица с ключом и несколькими полями данных. Процесс создания модели, кажется, работает нормально - он показывает, как и ожидалось в представлении дизайнера, файлы создаются в app_code, создается папка с двумя файлами dll, а файл конфигурации обновляется строкой соединения и другими записями.Visual Studio 2013 и Entity Framework

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

Я провел часы, читая другие случаи, как это, и я не могу понять:

  1. Почему это происходит, когда она никогда не была проблема с VS 2010

  2. Как исправить строка подключения указывает на нужные ему ресурсы. Я полностью потерял все технические советы по поводу полностью квалифицированных имен сборок - ничего не пытаюсь работать.

  3. Как установить некоторый параметр, чтобы ресурсы были в нужном месте? Все советы я прочитал, кажется, не относятся очень хорошо с VS 2013

мне нужно решить, должен ли я просто удалить VS 2013 и использовать VS 2012. В настоящее время я использую VS 2010 с ASP 4.0, и я хотел бы перейти к ASP 4.5 и, как правило, не отставать от технологии Microsoft. Тем не менее, у меня нет уровня квалификации для решения проблемы с версией VS, которая является ошибкой. Мне кажется, что эта реализация EF может быть вызвана либо ошибкой, либо некорректным повреждением на моем компьютере - я пытаюсь выяснить, что происходит. Я установил VS 2013 Express и SQL Svr 2012 на чистую машину, у которой в прошлом не было ни одного из этих инструментов.

Я бы очень хотел, чтобы кто-то, кто хорошо знаком с Visual Studio попытаться повторить мою проблему, как это займет всего несколько минут, чтобы сделать так:

  1. В MS SQL Server, создавать крошечные DB с одной таблицей, которая имеет первичный ключ и пару полей данных и заполняется некоторыми тестовыми данными. Позвоните в TinyDB с помощью TestTable1.

  2. Используя VS 2013 Express для Интернета, создайте «Новый веб-сайт» с опцией «Пустой веб-сайт ASP» с помощью VB.

  3. Добавить папку ASP App_Code, содержащую «Модель данных сущностей ADO.Net», и оставить имя «Модель».

  4. Создайте модель из БД и создайте «Новое соединение» для «TinyDB» и с помощью Entity Framework 6.0, а затем выберите «TestTable1». Обратите внимание, что пространство имен - «TinyDBModel». Нажав «Готово», вы создадите несколько элементов в App_Code, других папках и обновите web.config.

  5. Добавьте веб-форму с именем default.aspx и перетащите на нее сетку. В режиме проектирования для gridview выберите «новый источник данных», а затем параметр «Entity» (имя примечания EntityDataSource1, которое появляется в default.aspx). Нажмите «Далее» и «Именованное соединение» выберите «TinyDBEntities» - вот где моя получает ошибку «Невозможно загрузить указанный ресурс метаданных».

Обратите внимание, что это точное упражнение в VS 2010 отлично работает и создает сетку с отображенными правильными данными.

ответ

8

К сожалению, элемент управления EntityDataSource не работает с последней версией Entity Framework, EF6. Надеемся, что элемент управления получит обновление в будущей версии VS или EF, но пока вы не можете использовать их вместе.

Есть несколько решений/альтернатив:

  1. падение назад EF 5. Для того, чтобы сделать это, удалите и EDMX-.TT файлы из папки App_Code, удалите EF сборки из Bin, и удалите ссылки на EF из web.config. Затем перестройте сайт, добавьте новую модель Entity Model ADO.NET и выберите вариант 5 в диалоговом окне «Выбрать вашу версию». Затем удалите файлы .tt из папки App_Code, откройте диагональ EDMX, щелкните правой кнопкой мыши пустое место и в разделе «Свойства сетки» установите Code Generation Strategy в Legacy ObjectContext. Затем перестройте снова, и он должен работать.

  2. Использование привязки модели. Это действительно рекомендуемое решение. Команда Microsoft/EF рекомендует людям держаться подальше от элемента управления EntityDataSource и использовать его только для веб-сайтов Dynamic Data, предпочтение отдается предпочтению модели Binding. Это довольно чистый и простой способ использования, и дает вам большой контроль над вашими запросами и обновлениями объектов. Для получения дополнительной информации о модели Binding, проверьте: http://www.asp.net/web-forms/tutorials/data-access/model-binding/retrieving-data

+1

Hi Imar, Вашего первого предложения отлично работает, и я буду продолжать Model Binding Tutorial во втором предложении - большое спасибо! Я должен отметить, что ваши шаги должны выполняться в точном порядке (удалить .tt перед изменением свойства EDMX). Кроме того, для автоматического обновления EF файла конфигурации требуется вырезать-вставить, чтобы переместить ConfigSections обратно в начало файла - по крайней мере, в моем маленьком тесте. Ваше подробное решение вместе с вашим пониманием по более широкой проблеме наиболее ценится! –