Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架代码第一次迁移时给出SqlException:“;已经有一个名为';表名';在数据库中。”;_C#_Asp.net Mvc_Entity Framework_Migration_Code First - Fatal编程技术网

C# 实体框架代码第一次迁移时给出SqlException:“;已经有一个名为';表名';在数据库中。”;

C# 实体框架代码第一次迁移时给出SqlException:“;已经有一个名为';表名';在数据库中。”;,c#,asp.net-mvc,entity-framework,migration,code-first,C#,Asp.net Mvc,Entity Framework,Migration,Code First,我将EntityFramework6.3用于MVC5应用程序,在SQLServer2012中首先(首次)使用代码。该数据库以前并不存在,它是由EF从头开始创建的。当我尝试启动应用程序,因此EF应该创建数据库时,它会给我以下SqlException错误消息: “数据库中已存在名为“TableName”的对象。” 我的项目中有以下非常基本的实体: [Table("TableName")] public class ItemStatus { public int id { get; set;

我将EntityFramework6.3用于MVC5应用程序,在SQLServer2012中首先(首次)使用代码。该数据库以前并不存在,它是由EF从头开始创建的。当我尝试启动应用程序,因此EF应该创建数据库时,它会给我以下SqlException错误消息:

“数据库中已存在名为“TableName”的对象。”

我的项目中有以下非常基本的实体:

[Table("TableName")]
public class ItemStatus
{
    public int id { get; set; }
    public string Status { get; set; }
}
仅此而已

如果我将TableName的名称更改为其他名称,如foofoo,那么错误消息将反映此更改。因此,我没有使用相同的表名或任何明显的类似名称将两个模型放入

直到最近,一切都很好,我不确定我能做些什么来让它像这样破裂。在它停止工作之前,我做的最后一件事是添加一个新的视图模型。完全删除此选项没有帮助

补充资料1: 我的解决方案有两个项目,每个项目都有一个DbContext。Project2中的DbContext2从Project1中的DbContext1继承,而Project1又从IdentityDbContext继承。我在想也许这和它有关?因为某种原因,两个项目都试图创建同一个表。虽然我很确定在创建表之前应该检查表是否存在

附加信息2:当我在收到此错误后查看数据库服务器时,我看到它从Project1中的实体创建了多个其他表,没有明显的问题

附加信息3:如果我还没有说清楚的话,今天早些时候它运行良好。在我的项目中,这个实体已经存在了一段时间,没有任何问题,在出现这个错误之前,我没有对它做任何更改

提前谢谢你的建议


编辑:我应该提到我正在使用MigrateToLatestVersion作为我的初始化。如果我使用DropCreateDatabaseWays,我不会遇到问题。

我以前有过这个问题

转到SQL server安装目录并尝试删除*.ldf和*.mdf文件。我的文件位于:

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\
在此之前,您可能需要停止SQL server。如果不起作用,请尝试在解决方案目录或
C:\Users\u USER\u NAME\

如果不起作用,请尝试创建另一个数据库。连接字符串中的数据库名称配置也很容易丢失


如果有多个项目,请尝试检查所有*.config文件中的连接字符串。

是否使用自动迁移?您是否使用MigratedataBaseToLatestVersion初始值设定项?也许迁移表不知什么原因损坏了?我相信EF认为您的初始迁移需要再次运行,您可以通过运行SQL profiler来确认这一点。可能重命名不正确?

在此之前,两个项目是否在同一个DB模式中创建了各自的DB对象?是的。Project2使用DbContext2创建了一个数据库。DbContext2继承自DbContext1。Project1无法自行运行。您的代码是否在其他地方使用了特定的表
[table(“TableName”)]
?否。我可以确定这一点,因为如果我将此特定表的名称更改为我绝对不使用的名称(例如,fooobaahbah),则会出现相同的错误,但这次它说它正试图使对象fooboobaahbah,但不能,因为它已经存在。重置框架迁移。我正在使用MigrateDatabaseToLatestVersion。如果我更改为DropCreateDatabaseAlways初始化选项,那么问题就会消失,这也许并不奇怪。在运行DropCreateAlways选项一次后,返回到MigrateDatabaseToLatestVersion,会看到问题恢复。有一个迁移历史记录表,但其中没有任何有用的查找信息。我删除了文件,但它们仍在master DB中引用。删除数据库是正确的方法