Использование Visual Studio в сценарии Database First

Примечания

  1. Для СУБД ЛИНТЕР Visual Studio не может создать больше 5 указанных таблиц в одной EDMX-модели, поэтому необходимо использовать утилиту EdmGen.exe.

  2. Но если в окне "Choose Your Database Objects and Setting" (рис. 62) установить флажок напротив узла "Tables", то будет создана EDMX-модель из всех таблиц БД, при этом нет ограничения на количество таблиц в одной EDMX-модели.

Пример создания модели EDMX на основе существующей БД с помощью Visual Studio 2015:

  1. перед началом работы увеличить максимальный размер сортируемой записи в БД (это необходимо для выполнения запросов, которые формируются мастером Visual Studio): с помощью программы inl.exe, которая находится в подкаталоге /bin установочного каталога СУБД ЛИНТЕР, надо выполнить следующий запрос:

    ALTER DATABASE SET RECORD SIZE LIMIT 40000;
  2. перезапустить ядро СУБД ЛИНТЕР (см. документ «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Windows»);

  3. запустить Visual Studio, создать новый или открыть существующий проект;

  4. открыть файл App.config, ввести следующий текст и сохранить файл:

    < ?xml version="1.0" encoding="utf-8"? >
    < configuration >
      < configSections >
        < section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" / >
      < /configSections >
      < entityFramework >
        < providers >
          < provider invariantName="System.Data.LinterClient" type="System.Data.LinterClient.Entity.LinterProviderServices, EntityFramework.Linter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=04c2ab4f9b7aa4d0" / >
        < /providers >
        < defaultConnectionFactory type="System.Data.Entity.Infrastructure.LinterConnectionFactory, EntityFramework.Linter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=04c2ab4f9b7aa4d0" / >
      < /entityFramework >
    < /configuration >
    
  5. в окне Solution Explorer щёлкнуть правой кнопкой мыши по узлу References и в контекстном меню выбрать Add Reference… (рис. 15).

    Контекстное меню References
    Рисунок 15. Контекстное меню References

  6. в окне Reference Manager выбрать Assemblies= >Extensions, установить флажок напротив сборки EntityFramework.Linter и нажать кнопку OK (рис. 16).

    Окно Reference Manager
    Рисунок 16. Окно Reference Manager

  7. в окне Solution Explorer щёлкнуть правой кнопкой мыши по узлу Solution и в контекстном меню выбрать Manage NuGet Packages for Solution… (рис. 17).

    Контекстное меню Solution
    Рисунок 17. Контекстное меню Solution

  8. в окне Manage Packages for Solution нажать кнопку Browse, выбрать пакет EntityFramework, установить флажок напротив имени проекта и нажать кнопку Install (рис. 18).

    Окно Manage Packages for Solution
    Рисунок 18. Окно Manage Packages for Solution

    Примечание

    Если кнопка Install не активна, это значит, что пакет EntityFramwork уже установлен.

  9. если появится окно Preview, нажать кнопку OK (рис. 19).

    Окно Preview
    Рисунок 19. Окно Preview

  10. в окне License Acceptance нажать кнопку I Accept (рис. 20).

    Окно License Acceptance
    Рисунок 20. Окно License Acceptance

  11. в меню Visual Studio выбрать Build= >Build Solution (рис. 21).

    Меню Build
    Рисунок 21. Меню Build

  12. в окне Solution Explorer щелкнуть правой кнопкой мыши по названию проекта и в контекстном меню выбрать: Add= >New Item…(рис. 22).

    Контекстное меню проекта
    Рисунок 22. Контекстное меню проекта

  13. в окне Add New Item выбрать Installed= >Visual C# Items= >Data= >ADO.NET Entity Data Model и нажать кнопку Add (рис. 23).

    Окно Add New Item
    Рисунок 23. Окно Add New Item

  14. в окне Choose Model Contents выбрать EF Designer from database и нажать кнопку Next > (рис. 24).

    Окно Choose Model Contents
    Рисунок 24. Окно Choose Model Contents

  15. в окне Choose Your Data Connection нажать кнопку New Connection… (рис. 25).

    Окно Choose Your Data Connection
    Рисунок 25. Окно Choose Your Data Connection

  16. если появится окно Connection Properties, в котором источник данных не принадлежит СУБД ЛИНТЕР, нажать кнопку Change… (рис. 26).

    Окно Connection Properties
    Рисунок 26. Окно Connection Properties

  17. в окне Change Data Source выбрать источник данных Linter Database и нажать кнопку OK (рис. 27).

    Окно Change Data Source
    Рисунок 27. Окно Change Data Source

  18. в окне Connection Properties ввести параметры подключения к ЛИНТЕР-серверу и нажать кнопку OK (рис. 28).

    Окно Connection Properties
    Рисунок 28. Окно Connection Properties

  19. в окне Choose Your Data Connection нажать кнопку Next > (рис. 29).

    Окно Choose Your Data Connection
    Рисунок 29. Окно Choose Your Data Connection

  20. в окне Choose Your Database Objects and Settings установить флажки напротив тех объектов БД, которые необходимо включить в EDMX-модель, и нажать кнопку Finish (рис. 30).

    Окно Choose Your Database Objects and Settings
    Рисунок 30. Окно Choose Your Database Objects and Settings

    Примечание

    Отмеченные таблицы должны иметь первичный ключ. Если первичный ключ в таблице отсутствует, но есть поле с атрибутом NOT NULL, то сущность в модели EDMX будет доступна только для чтения. Если отсутствуют и первичный ключ, и поле с атрибутом NOT NULL, то в модели EDMX не будет создана сущность для данной таблицы.

  21. выполнить, при необходимости, редактирование модели EDMX с помощью команд из контекстного меню, например, для добавления новой сущности надо щелкнуть правой кнопкой мыши по свободному пространству редактора EDMX-модели и в контекстном меню выбрать команду Add New= >Entity… (рис. 31).

    Контекстное меню редактора EDMX-модели
    Рисунок 31. Контекстное меню редактора EDMX-модели