【发布时间】:2016-11-29 08:32:25
【问题描述】:
我正在使用 ASP.NET Core MVC6 和 Entity Framework Core 代码构建一个应用程序,首先在 DB 上下文中构建,SQL 数据库已经填充了数据记录。我最近对数据模型进行了一些小的更改并重新创建了迁移,在 VS 2015 包管理器控制台中使用命令为 ("dotnet ef migrations add Stage3", "dotnet ef database update"),但它遇到了以下错误:
dotnet.exe : System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Company' in the database.
Company 表在表关系之上,似乎是因为 Company 表已经存在,EF 无法更新新的表结构。如果我在连接字符串中更改数据库名称,它将创建具有新表结构的新数据库,而不会出现任何问题。我不确定如何解决这个问题?应用程序在不久的将来上线后,我将正确地对模式进行更多更改,并且将再次遇到同样的问题,我无法删除带有实时数据的数据库以重新创建新的表结构,也许我应该在 Startup.cs 文件中配置它,但我还没有找到任何有用的资源。请给我一些建议。
我已尝试将 DB Initializer 更改为附加的屏幕截图,但不知道该怎么做。
我再次检查了项目代码,迁移尚未应用到 __MigrationHistory 表,迁移代码实际上包含创建整个数据库结构的代码,示例如下:
migrationBuilder.CreateTable(
name: "Company",
columns: table => new
{
CompanyId = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
CompanyName = table.Column<string>(maxLength: 100, nullable: false),
IsAdmin = table.Column<bool>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Company", x => x.CompanyId);
});
而且我没有更改项目命名空间。最近我只是对站点用户权限表(公司有很多站点)等少数表关系进行了一些更改。我添加了一个权限表,所以现在站点用户权限表可以有多个权限类型而不是单一权限类型。
不确定如何在实体框架核心中设置自动迁移。
【问题讨论】:
-
您可以发布对公司所做的更改吗?
-
company 表没做改动,最近只是对站点用户权限表等少数表关系做了一些改动(公司有很多站点)。我添加了一个权限表,所以现在站点用户权限表可以有多个权限类型而不是单一权限类型。
标签: sql asp.net-mvc entity-framework asp.net-core asp.net-core-mvc