无法获得EF Code First在SQL Server Express 2012上工作

时间:2013-04-12 13:07:15

标签: entity-framework-4.1 sql-server-2012 code-first

我已经尝试了所有现有问题中提到的解决方案,但它们都不适用于我。当我运行我的应用程序(运行没有错误),然后去检查SQLExpress数据库(通过SQL Management Studio)时,我可以看到没有表格从我的Code First类生成

这是我的连接字符串:

<add name="BSContext" connectionString="Data Source=.\SQLEXPRESS; Integrated Security=SSPI; Initial Catalog=BSDomain; MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

我使用的是Win 8 Pro 64x,并使用VS 2012和SQL Express 2012.这是我的BSContext代码:

public class BSContext : DbContext
{
    public DbSet<Event> Events { get; set; }
    public DbSet<Location> Locations { get; set; }
    public DbSet<Author> Authors { get; set; }
}

在我的application_start()中,我有以下内容:

Database.SetInitializer<BSContext>(new EventInitializer());

EventInitializer的代码如下:

public class EventInitializer : DropCreateDatabaseAlways<BSContext>
{
    protected override void Seed(BSContext context)
    {
        // Seed Code
    }
}

仍然无效。

2 个答案:

答案 0 :(得分:0)

尝试将此添加到Global.asax中的Application_Start()方法。

System.Data.Entity.DropCreateDatabaseAlways<BSContext>());

这会强制应用程序在每次运行应用程序时创建数据库,所以不要将其留在那里!

答案 1 :(得分:0)

事实证明,这只是因为我在ID字段中使用了以下格式:

private int AuthorID { get; set; }

当我应该使用时:

private int AuthorId { get; set; }

现在一切正常!