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

时间:2013-10-13 12:19:56

标签: c# sql sql-server visual-studio sqlexception

我想创建数据库,我使用实体框架但是当我运行我的wpf项目时,我接受了这个错误。这个错误出现在2个表中。在这里,我的错误:

using (var c = new RSPDbContext()) {
            var s = from v in c.Users select v;
        }

在RSPDbContext.cs中,我生成了我的数据库。

public RSPDbContext()
        : base("databaseName")
    {
        Database.SetInitializer<RSPDbContext>((IDatabaseInitializer<RSPDbContext>)new MigrateDatabaseToLatestVersion<RSPDbContext, RSP.Common.Migrations.Configuration>());
    }

和Configuration.cs:

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

在app.config中:

<connectionStrings>
    <add name="databaseName" connectionString="Data source=.\SQLExpress;Initial catalog=databaseName;Integrated Security=true; MultipleActiveResultSets=True;" providerName="System.Data.SQLClient" />
</connectionStrings>

在RSDPContext.cs中,我可以在弹出此表时顺利创建:

public DbSet<tableName> tableNames { get; set; }

为什么我会接受这个错误?任何的想法 ?提前谢谢

1 个答案:

答案 0 :(得分:1)

如果您在创建数据库之后开始使用迁移,则可能会看到此错误,因为EF不知道此数据库不需要迁移。

解决此问题的最简单方法是删除现有数据库,看看您的应用是否可以创建新的 clean 数据库。 (显然,如果你有一个实时的生产数据库,你不能这样做。)否则,你需要创建一个initial migration并强制它应用。