Существует ли Entity Framework 7 Database-First POCO Generator?
Я играл с Entity Framework 7 и ASP.NET 5 для нового проекта, над которым я работаю, но я наткнулся на контрольно-пропускной пункт. Команда, над которой я работаю, использует подход DBA-first к разработке; то есть база данных проектируется администраторами баз данных, а затем разработчики изменяют код, чтобы компенсировать изменения модели.
Используя EF6, это работает хорошо, так как мы можем просто обновить код, используя функциональность "обновления" дизайнера EDMX. Одним щелчком мыши мы получаем новые классы, и все готово. Однако в EF7 все по-другому. Дизайнера больше нет, и мы должны использовать Code-First, который, согласно некоторым публикациям в блоге, разработанным командой EF, также должен поддерживать генерацию кода "Database-First".
Однако я не могу понять, как это сделать с помощью Visual Studio 2015 CTP6 в приложении ASP.NET 5. Поддержка инструментов уже есть или мне не повезло? И это вообще идет?
4 ответа
В последних битах можно использовать командную строку dnx и команды PowerShell, чтобы сделать это, да
Scaffold-DbContext '<connectionString>' EntityFramework.MicrosoftSqlServer
или же
dnx ef dbcontext scaffold "<connectionString>" EntityFramework.MicrosoftSqlServer
или (из EF Core RC2)
dotnet ef dbcontext scaffold "<connectionString>" Microsoft.EntityFrameworkCore.SqlServer
Вы должны установить Microsoft.EntityFrameworkCore.Tools
пакет для команды на работу.
Это можно сделать с помощью консоли диспетчера пакетов NuGet или командной строки. Я пытался с командной строки. После перехода к папке проекта в командной строке я использовал похожую команду:
dnx ef dbcontext scaffold "Data Source=myServerName; Initial Catalog=myDatabaseName; Integrated Security=True" EntityFramework.SqlServer
Я получил ошибки об отсутствующих пакетах:
EntityFramework.Commands
EntityFramework.SqlServer.Design
с последующим выполнением этой команды:
dnu restore
Фактический требуемый пакет (ы) может варьироваться в зависимости от упомянутых фреймворков в вашем файле project.json.
Если вы не можете выполнить dnx или другие связанные команды в командной строке, перейдите по ЭТОЙ ссылке, которая была упомянута в комментариях к другому ответу.
PS: Вот текущий список команд [на момент написания, последнее обновление 21 августа]:
Вот обновленные параметры для RC2.NET Core (май 2016)
dotnet ef dbcontext scaffold -c RRStoreContext -o Model
"Data Source=(local);Initial Catalog=DBNAME;Integrated Security=True"
Microsoft.EntityFrameworkCore.SqlServer --force
Обратите внимание, что Microsoft.EntityFrameworkCore.SqlServer
это новое имя для пакета, который должен использоваться в команде. Я добавил force
параметр для перезаписи существующих файлов. Параметр 'o' является именем выходного каталога. И сейчас dotnet
вместо dnx
,
Начиная с текущей версии зависимости, которые вам нужны в вашем project.json
являются
"dependencies": {
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools": {
"type": "build",
"version": "1.0.0-preview1-final"
}
},
Примечание. Тип 'build' означает, что что-либо, ссылающееся на вашу сборку, не будет воспринимать эту DLL как зависимость, поскольку она нужна только для инструментов.