已经是数据库中的一个对象

我创建了一个新的.NET项目并添加了ADO.NET EF 6。
我通过EF向导并选择了从数据库中选择Code First。
然后我选择了一张桌子。 我们称之为“产品”。
这就创建了“公共部分类产品”和“公共部分类Model1”。

我立即在我的应用程序中创建了一个LINQ查询来查询“产品”,但我得到以下错误。

数据库中已经有一个名为'Product'的对象。

当我运行SQL配置文件时,我看到以下内容:

CREATE TABLE [dbo]。[Product] ...

我不明白为什么该项目试图创建表,因为表已经存在。

我读了几篇文章,告诉我需要启用迁移,但我真的不希望我的项目能够在数据库中创建表。
(我们有一个DBA,它不允许我们在数据库中“轻松”创建表)

然后我决定尝试创建一个“Migrations”文件夹和一个“内部密封类配置”,其中包含以下内容:

public Configuration()
{
    AutomaticMigrationsEnabled = false;
    AutomaticMigrationDataLossAllowed = false;
}

这给了我一个新的错误。

无法更新数据库以匹配当前模型,因为有未决的更改并且自动迁移已禁用。 将挂起的模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。

如何解决这个问题?

UPDATE
所以我创建了一个VB.NET和一个C#应用程序,并使用完全相同的代码指向同一个数据库。
C#版本的“已存在数据库”问题。
VB.NET版本没有“已存在的数据库”问题。


我不知道为什么,但在VB.NET中Code First from Database工作正常,但在C#中这对于EF6无法正常工作。

我决定让C#创建“dbo .__ MigrationHistory”,并发现这很有效,直到我添加了一个与数据库中的表名称相同的新类。
这导致了以下错误:

自从创建数据库以来,支持'TEST'上下文的模型已经发生了变化。 可以手动删除/更新数据库,也可以使用IDatabaseInitializer实例调用Database.SetInitializer。

我再次想到,为什么当我已经拥有一个数据库并试图使用Code First“FROM”数据库时,EF需要迁移信息。

所以一个快速的StackOverFlow搜索引导我到以下文章:
“仅实体框架代码错误:自创建数据库以来支持上下文的模型已更改”
一旦我在Global.asax中添加了以下代码行后,所有代码都开始正常工作。

Database.SetInitializer<YourContext>(null);

你有一个现有的数据库,你有一个DBA为你负责。 您需要更改为实体框架数据库优先方法。 这使您可以在不修改数据库参照完整性的情况下使用现有数据库。 您需要查看数据库优先方法。 快速介绍https://msdn.microsoft.com/en-us/data/jj591506.aspx


这里有一个一步一步的指导方针https://msdn.microsoft.com/en-us/library/jj200620.aspx。 请检查你的步骤。

它看起来像这个和这个重复。 这个问题上还有很多。

链接地址: http://www.djcxy.com/p/90285.html

上一篇: Already an object in the database

下一篇: Enzyme Throws an error if the React Component requires jQuery