Как создать EDMX из файлов CSDL+SSDL+MSL?

Я использую EdmGen.exe для автоматического создания файлов:

  • База данных.cs
  • Views.cs
  • Концепция.csdl
  • Хранилище.ssdl
  • Отображение.msl

Как я могу сгенерировать файл EDMX из всего этого, чтобы я мог включить его в свой проект Visual Studio?

Я пытаюсь автоматизировать обновление EDMX таким образом, чтобы не требовалось использование Visual Studio IDE, т.е. полностью из командной строки.

Причины

Моя команда разработчиков должна начать использовать огромную базу данных Oracle, которая была спроектирована давно и претерпевает небольшие, нечастые изменения. ODP Entity Framework от Oracle кажется очень хорошей платформой для работы, но их инструменты интеграции Visual Studio становятся катастрофой, которую мы пытаемся избежать, как чумы. Меня попросили написать сценарий автоматической генерации модели EF полностью из командной строки. Создание нового EDMX из файлов CSDL+SSDL+MSL — вот где я застрял.


person vitaly-t    schedule 30.07.2015    source источник


Ответы (1)


То, что вы хотите, находится далеко за пределами левого поля для EF. Я почти уверен, что вам придется написать какой-нибудь пользовательский инструментарий, поскольку генерация EDMX не является чем-то, что я вижу в Visual Studio, заставляющим меня думать, что это часть самой IDE.

Пара ресурсов, которые я нашел по этому поводу:

Глядя на EDMX, который у меня есть локально, это в основном просто логическое сочетание тех файлов, которые вы уже сгенерировали, поэтому вы сможете понять и написать генератор без особых хлопот. Согласитесь, это будет чертовски утомительно.

Суть в том, что я просто не думаю, что есть инструмент, чтобы сделать это для вас, учитывая типичные стратегии разработки EF с подходами «сначала код» или «сначала база данных». Предписанный здесь подход был бы первым кодом, но я полностью понимаю, почему вы не хотите их воссоздавать.

Тем не менее, если вам по какой-то причине абсолютно не нужен EDMX (визуализация или что-то еще), я бы на самом деле просто шаблонизировал ваши модели и использовал псевдо-подход «сначала код» и даже не беспокоился о цепочке инструментов EDMX.

Удачи.

person Bigsby    schedule 30.07.2015
comment
Почти трудно поверить, что Entity Framework нельзя использовать без пользовательского интерфейса. Я думаю, что, возможно, есть способ сгенерировать все необходимые файлы модели, которые будут включены вообще без EDMX? Например, с параметром /mode:FromSsdlGeneration. - person vitaly-t; 31.07.2015
comment
Вы можете абсолютно использовать Entity Framework без пользовательского интерфейса. Это называется code-first. Вы не хотите этого делать. Вы всегда можете попробовать подключить файлы, которые у вас уже есть, в стандартную строку подключения EF. Единственное, что EDMX дает вам помимо дизайнера, — это конкретная DbContext версия, которая оборачивает ваши сущности в EntitySet<> объекты. - person Bigsby; 31.07.2015
comment
Возможно, я задал неправильный вопрос о получении EDMX, но в .NET это вполне выполнимо. Я обнаружил, что остальные шаги просто выполняются с помощью утилиты TextTransform.exe, которая поставляется с .NET для преобразования шаблона T4. Просто нужны правильные шаблоны T4. - person vitaly-t; 31.07.2015
comment
Принимая ответ 5 лет спустя, не в силах вспомнить, о чем это было :) - person vitaly-t; 23.10.2020