.NET Core EF 2.1脚手架-DatabaseFirst-如何添加更多表

时间:2018-12-04 10:20:59

标签: c# asp.net-core .net-core entity-framework-core

我有一个干净的项目解决方案(打算是.NET Core MVC应用程序)

我有两个项目-Home.CorePoC.EntityModel和Home.CorePoC.Model 我正在从Home.CorePoC.Model调用dotnet cli。

我的想法是我希望部分类和逻辑与定制属性以及数据库的属性分离。

我想编写一个Powershell脚本,当我想添加/删除一些表,表中的列等时将调用该脚本。

在dotnet CLI中,当我最初添加表时,它工作得很好:

Scaffold-DbContext "Server=sqlServ2016;Database=TestDb;Persist Security 
Info=False;User ID=admin;Password=admin;" Microsoft.EntityFrameworkCore.SqlServer 
-Tables "Table1","Table2","Table3" -ContextDir "..\Home.CorePoC.EntityModel" 
-OutputDir "TestDB" -force -DataAnnotations -UseDatabaseNames

现在,当我想添加更多表时,它也可以正常工作,但是我收到一条错误消息:“无法添加'Table4'。此文件夹中已经有一个具有相同名称的链接文件。” 另外,我在CLI控制台中收到错误消息:

Exception calling "AddFromFile" with "1" argument(s): "A drag operation is already in progress (Exception from HRESULT: 0x80040103)"

必须删除所有文件,然后重新创建它(链接文件TestContext.cs最初创建的),或者以其他方式避免这种非关键的错误消息(我已成功将Table4添加到模型中)。 / p>

我计划将此语句放入Powershell脚本中,直到可以从项目文件夹(已在其中安装nuget Microsoft.EntityFrameworkCore.Tools(2.1.4)的位置)中调用它为止。

1 个答案:

答案 0 :(得分:2)

这是因为它将尝试为Context添加Table4文件,但由于已经存在而无法添加。已经有一个feature request用于更新Entity Framework Core支架,而不必每次都重新创建它们。您每次必须使用-Force标志

覆盖生成的实体