Как использовать EF4 в качестве DAL

#visual-studio #visual-studio-2010 #entity-framework #entity-framework-4

#visual-studio #visual-studio-2010 #entity-framework #entity-framework-4

Вопрос:

В настоящее время я использую EF 4 с моим ASP.NET Веб-сайт для доступа к базе данных MySQL. Это работает нормально. Однако теперь я хочу, чтобы другой проект веб-сайта получал доступ к тем же объектам. Как мне это настроить?

Я не могу просто ссылаться на исходный веб-сайт, поскольку это веб-сайт, а не веб-приложение. Итак, предположительно, мне нужно поместить модель данных объекта в ее собственный проект и скомпилировать в DLL. Но…

  • Какой тип проекта?
  • Мне просто вырезать и вставить DataModel.edmx и DataModel.Designer.cs, скомпилировать и добавить ссылку на оба веб-сайта? Как насчет пространств имен?
  • Куда мне поместить строку подключения? На данный момент это в Web.config моего проекта.

Я действительно понятия не имею, с чего начать — я просто следовал инструкциям, чтобы заставить EF работать до сих пор! Я был бы очень признателен за пошаговые инструкции, если у кого-нибудь есть время. Спасибо.

Ответ №1:

Модель должна быть помещена в новый проект библиотеки классов. Я бы предпочел воссоздать модель на этом этапе на основе существующей модели. Для пространства имен мне нравится использовать {CompanyName}.Доступ к данным. Удалите старую модель из проекта вашего веб-сайта, добавьте ссылку на новый проект библиотеки классов и создайте проект веб-сайта. Проект веб-сайта будет прерываться во многих местах, но это должен быть простой вопрос изменения пространства имен на новую сборку доступа к данным. Я предпочитаю этот метод в качестве вырезания / вставки, потому что теперь у вас есть хорошие чистые пространства имен. Будьте осторожны с любыми местами, в которых у вас могут быть строки с именами сущностей, например, если вы использовали Include (если вы используете EF 4 и отложенную загрузку, это не должно быть проблемой). Оставьте строку подключения в web.config для обоих проектов веб-сайта. Когда вы создаете модель в библиотеке классов, она добавит строку подключения в app.config. Это нормально, это просто для того, чтобы модель знала, как подключиться к базе данных при ее обновлении.

Комментарии:

1. @user706547 Вау, спасибо — это было безболезненно! Теперь все работает. Пара вопросов — 1. Игнорируется ли строка подключения в app.config во время выполнения? 2. Что вы имели в виду, говоря об объектах в строках? — Я только что создал тестовую страницу с Label1. Текст = (из t в ctx.Topics. Включить («Тема») выберите t.Subject. Заголовок). First(); и это отлично работает. Я использую EF4 и понятия не имею, что такое отложенная загрузка!