【发布时间】:2015-11-11 22:28:56
【问题描述】:
我创建了一个新的 .NET 项目并添加了 ADO.NET EF 6。
我浏览了 EF 向导并从数据库中选择 Code First。
然后我选择了一张桌子。我们称之为“产品”。
这创建了“公共部分类产品”和“公共部分类 Model1”。
我立即在我的应用程序中创建了一个 LINQ 查询来查询“产品”,但出现以下错误。
数据库中已经有一个名为“产品”的对象。
当我运行 SQL 配置文件时,我看到以下内容:
创建表 [dbo].[产品] ...
我不明白为什么该项目要尝试创建该表,因为该表已经存在。
我阅读了几篇文章,告诉我我需要启用迁移,但我真的不希望我的项目能够在数据库中创建表。
(我们有一个 DBA 不允许我们在数据库中“轻松”创建表)
然后我决定尝试使用以下内容创建一个“迁移”文件夹和一个“内部密封类配置”:
public Configuration()
{
AutomaticMigrationsEnabled = false;
AutomaticMigrationDataLossAllowed = false;
}
这给了我一个新的错误。
无法更新数据库以匹配当前模型,因为有 挂起的更改和自动迁移被禁用。要么写 待定模型更改为基于代码的迁移或启用自动 移民。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 启用自动迁移。
我该如何解决这个问题?
更新
因此,我创建了一个 VB.NET 和一个 C# 应用程序,它们使用完全相同的代码指向同一个数据库。
C# 版本存在“已在数据库中”问题。
VB.NET 版本没有“已经在数据库中”的问题。
【问题讨论】:
-
你试过在你的包管理器控制台上执行这两个命令吗? “添加迁移”然后是“更新数据库”。 This 可以帮到你。
-
@Kosala 是的,我有并且这些命令试图在数据库中创建一个名为“dbo.__MigrationHistory”的表。我正在尝试使用数据库中的 Code First 而不向数据库中添加更多表。
标签: c# entity-framework entity-framework-6