Как использовать модель, определенную в библиотеке классов (средства работы с моделью EDM)

Этот раздел описывает использование концептуальной модели, определенной в проекте библиотеки классов среды Visual Studio 2008.

Первая процедура в этом разделе описывает, как использовать концептуальную модель, определенную в библиотеке классов на основе проектов, отличных от проектов веб-узла ASP.NET. Вторая процедура показывает, как использовать концептуальную модель, определенную в библиотеке классов на основе проекта веб-узла ASP.NET.

Использование модели, определенной в библиотеке классов на основе проектов, отличных от проектов веб-узла ASP.NET

  1. В среде Visual Studio создайте проект библиотеки классов Visual Basic или Visual C#.

    Дополнительные сведения о создании проектов в Visual Studio см. в разделе Как создавать решения и проекты.

  2. Добавление концептуальной модели в проект библиотеки классов.

    Сведения о создании новой концептуальной модели и добавлении ее к проекту см. в разделе Как создать новый EDMX-файл (средства модели EDM). Сведения о добавлении существующей концептуальной модели к проекту см. в разделе Как добавить существующий EDMX-файл (средства работы с моделью EDM).

  3. Добавьте новый проект, отличный от проекта веб-узла ASP.NET, к существующему решению.

    Сведения о добавлении проекта к существующему решению см. в разделе Как создавать решения на основе нескольких проектов.

  4. Щелкните правой кнопкой мыши вновь добавленный проект (отличный от проекта на основе библиотеки классов) и выберите команду Добавление ссылки.

    Появится диалоговое окно Добавление ссылки.

  5. Откройте вкладку Проекты диалогового окна Добавление ссылки и выберите проект библиотеки классов. Нажмите кнопку ОК.

  6. Снова щелкните правой кнопкой мыши вновь добавленный проект (отличный от проекта на основе библиотеки классов) и выберите команду Добавление ссылки.

  7. Откройте вкладку .NET диалогового окна Добавление ссылки и выберите элемент System.Data.Entity. Нажмите кнопку ОК.

  8. Откройте файл App.Config проекта библиотеки классов.

  9. Выделите раздел со строкой соединения файла App.Config, щелкните правой кнопкой мыши и выберите команду Копировать. Например, скопируйте код, подобный этому:

    <add name="SchoolEntities" 
               connectionString="metadata=res://*/School.csdl|
                                          res://*/School.ssdl|
                                          res://*/School.msl;
                                 provider=System.Data.SqlClient;
                                 provider connection string=&quot;
                                 Data Source=(local);
                                 Initial Catalog=School;
                                 Integrated Security=True;
                                 MultipleActiveResultSets=True&quot;" 
               providerName="System.Data.EntityClient" />
    
  10. Откройте файл App.Config вновь добавленного проекта и вставьте скопированные данные строки соединения в узел <connectionStrings>.

    Cc716677.note(ru-ru,VS.100).gifПримечание
    Если в проекте отсутствует файл App.Config, его можно добавить, щелкнув правой кнопкой мыши проект в обозревателе решений, переведя указатель на элемент Добавить и выбрав команду Новый элемент.Выберите элемент Файл конфигурации приложения в открывшемся диалоговом окне и нажмите кнопку ОК.

Теперь во вновь добавленном проекте можно перейти к созданию кода, в котором используется концептуальная модель, определенная в проекте библиотеки классов.

Cc716677.note(ru-ru,VS.100).gifПримечание
До начала построения решения может потребоваться определить вновь добавленный проект как стартовый проект.Чтобы выполнить это, щелкните правой кнопкой мыши проект в обозревателе решений и выберите команду Назначить запускаемым проектом.

Использование модели, определенной в библиотеке классов на основе проекта веб-узла ASP.NET

  1. В среде Visual Studio создайте проект библиотеки классов Visual Basic или Visual C#.

    Дополнительные сведения о создании проектов в Visual Studio см. в разделе Как создавать решения и проекты.

  2. Добавление концептуальной модели в проект библиотеки классов.

    Сведения о создании новой концептуальной модели и добавлении ее к проекту см. в разделе Как создать новый EDMX-файл (средства модели EDM). Сведения о добавлении существующей концептуальной модели к проекту см. в разделе Как добавить существующий EDMX-файл (средства работы с моделью EDM).

  3. Добавьте проект веб-узла ASP.NET к существующему решению.

    Сведения о добавлении проекта к существующему решению см. в разделе Как создавать решения на основе нескольких проектов.

  4. Щелкните правой кнопкой мыши проект веб-узла ASP.NET и выберите команду Добавление ссылки.

    Появится диалоговое окно Добавление ссылки.

  5. Откройте вкладку .NET диалогового окна Добавление ссылки и выберите элемент System.Data.Entity. Нажмите кнопку ОК.

  6. Следующий шаг состоит в формировании ссылки на проект библиотеки классов из проекта веб-узла ASP.NET. Предусмотрены два способа выполнения этой задачи.

    1. Щелкните правой кнопкой мыши проект веб-узла ASP.NET в обозревателе решений и выберите команду Добавление ссылки.

      Появится диалоговое окно Добавление ссылки.

    2. Откройте вкладку Проекты диалогового окна Добавление ссылки и выберите проект библиотеки классов. Нажмите кнопку ОК.

    — или —

    1. В обозревателе решений щелкните правой кнопкой мыши проект библиотеки классов и выберите команду Построить.

      Сборка библиотеки классов добавляется к папке bin\Debug проекта.

    2. Щелкните правой кнопкой мыши проект веб-узла ASP.NET и выберите команду Добавить папку ASP.NET. Выберите Bin.

      Папка Bin добавляется к проекту.

    3. В проводнике Windows перейдите к папке bin\Debug проекта библиотеки классов. Щелкните правой кнопкой мыши сборку проекта (файл <имя_проекта>.dll) и выберите команду Копировать.

    4. В обозревателе решений щелкните правой кнопкой мыши папку Bin, относящуюся к проекту веб-узла ASP.NET, и выберите команду Вставить.

  7. Следующий шаг состоит в создании файлов модели и сопоставления, доступных для проекта веб-узла ASP.NET. Это можно выполнить путем включения файлов модели и сопоставления в качестве ресурсов в сборку библиотеки классов, как описано в следующих шагах. Сведения об альтернативных методах см. в описании процедуры в конце настоящего раздела («Копирование файлов сопоставления и метаданных в проект веб-узла ASP.NET»).

    1. Откройте файл App.Config проекта библиотеки классов.

    2. Выделите данные строки соединения, щелкните правой кнопкой мыши и выберите команду Копировать. Например, скопируйте код, подобный этому:

      <add name="SchoolEntities" 
                 connectionString="metadata=res://*/School.csdl|
                                            res://*/School.ssdl|
                                            res://*/School.msl;
                                   provider=System.Data.SqlClient;
                                   provider connection string=&quot;
                                   Data Source=(local);
                                   Initial Catalog=School;
                                   Integrated Security=True;
                                   MultipleActiveResultSets=True&quot;" 
                 providerName="System.Data.EntityClient" />
      
    3. Откройте файл Web.config проекта веб-узла ASP.NET и вставьте скопированные данные строки соединения в узел <connectionStrings>.

Теперь можно создать в проекте веб-узла ASP.NET код, в котором будет использоваться концептуальная модель, определенная в проекте библиотеки классов.

Cc716677.note(ru-ru,VS.100).gifПримечание
До начала построения решения может потребоваться определить вновь добавленный проект как стартовый проект.Чтобы выполнить это, щелкните правой кнопкой мыши проект в обозревателе решений и выберите команду Назначить запускаемым проектом.

Копирование файлов сопоставления и метаданных в проект веб-узла ASP.NET

Следующие процедуры описывают два варианта копирования файлов модели и сопоставления в проект веб-узла ASP.NET. Оба рассматриваемых здесь метода являются альтернативными по отношению к шагу 7 в приведенной выше процедуре. Первая процедура описывает, как скопировать файлы в папку Bin проекта веб-узла ASP.NET, а вторая процедура описывает, как скопировать файлы в папку App_Data. Если выбран один из этих вариантов, не внедряйте файлы модели и файлы сопоставления в качестве ресурсов в сборку библиотеки классов.

Копирование файлов модели и файлов сопоставления в папку Bin проекта веб-узла ASP.NET

  1. Дважды щелкните файл с расширением EDMX в проекте библиотеки классов. Файл EDMX откроется в конструкторе моделей EDM ADO.NET (в конструкторе сущностей).

  2. Щелкните правой кнопкой мыши пустой участок области конструктора и выберите команду Свойства.

  3. В окне Свойства задайте для свойства Обработка артефакта метаданных значение Копировать в выходной каталог. После выбора этого значения конструктор сущностей изменяет строку соединения в файле App.Config библиотеки классов, так что в ней становятся заданными относительные пути к файлам.

  4. В обозревателе решений щелкните правой кнопкой мыши проект библиотеки классов и выберите «Построить».

  5. В проводнике Windows перейдите к каталогу вывода библиотеки классов (папка bin\Debug) и скопируйте файлы с расширениями CSDL, SSDL и MSL.

  6. Щелкните правой кнопкой мыши папку Bin, относящуюся к проекту веб-узла ASP.NET, и выберите команду Вставить.

    Cc716677.note(ru-ru,VS.100).gifПримечание
    Если проект не содержит папку Bin, ее можно добавить, щелкнув правой кнопкой мыши проект в обозревателе решений, переведя указатель на элемент Добавить папку ASP.NET и выбрав Bin.

  7. Откройте файл App.Config проекта библиотеки классов. Выделите данные строки соединения, щелкните правой кнопкой мыши и выберите команду Копировать.

  8. Откройте файл Web.config проекта веб-узла ASP.NET и вставьте скопированные данные строки соединения в узел <connectionStrings>.

  9. Измените записи метаданных в строке соединения так, чтобы они были обозначены префиксом ~\bin\. Например, скопированная и измененная запись строки соединения должна выглядеть следующим образом:

    <add name="SchoolEntities" 
             connectionString="metadata=~\bin\School.csdl|
                                        ~\bin\School.ssdl|
                                        ~\bin\School.msl;
                               provider=System.Data.SqlClient;
                               provider connection string=&quot;
                               Data Source=(local);
                               Initial Catalog=School;
                               Integrated Security=True;
                               MultipleActiveResultSets=True&quot;" 
             providerName="System.Data.EntityClient" />
    

Копирование файлов модели и файлов сопоставления в папку App_Data веб-узла ASP.NET

  • Шаги копирования файлов модели и сопоставления в папку App_Data аналогичны шагам копирования этих файлов в папку Bin. Однако существуют два ключевых различия.

    • Файлы с расширениями CSDL, SSDL и MSL должны быть скопированы в папку App_Data проекта веб-узла ASP.NET вместо папки Bin (см. приведенный выше шаг 6).

      Примечание   Если проект не содержит папку App_Data, ее можно добавить, щелкнув правой кнопкой мыши проект в обозревателе решений, направив указатель на элемент Добавить папку ASP.NET и выбрав App_Data.

    • После копирования данных строки соединения из папки App.Config библиотеки классов в файл Web.config веб-узла ASP.NET (см. приведенные выше шаги 7 и 8) измените записи метаданных так, чтобы они были обозначены префиксом |DataDirectory|. Например, скопированная и измененная запись строки соединения должна выглядеть следующим образом:

      <add name="SchoolEntities" 
               connectionString="metadata=|DataDirectory|\School.csdl|
                                          |DataDirectory|\School.ssdl|
                                          |DataDirectory|\School.msl;
                                 provider=System.Data.SqlClient;
                                 provider connection string=&quot;
                                 Data Source=(local);
                                 Initial Catalog=School;
                                 Integrated Security=True;
                                 MultipleActiveResultSets=True&quot;" 
               providerName="System.Data.EntityClient" />
      

См. также

Другие ресурсы

Задачи развертывания при помощи средств работы с моделью EDM
Задачи средств модели EDM
Сценарии средств работы с моделью EDM
Connection Strings