Entity framework 我无法使用SQL Server Express和实体框架创建数据库文件

Entity framework 我无法使用SQL Server Express和实体框架创建数据库文件,entity-framework,sql-server-express,Entity Framework,Sql Server Express,我有以下代码: public DataInitializer() { Database.SetInitializer<DataContext>(null); try { using (var context = new DataContext()) { if (!context.Database.Exists()) {

我有以下代码:

public DataInitializer() {
            Database.SetInitializer<DataContext>(null);
            try {
                using (var context = new DataContext()) {
                    if (!context.Database.Exists())
                    {
                        ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                    }
                }

            }
            catch (Exception ex) {
                throw new InvalidOperationException("The Data database could not be initialized", ex);
            }
        }
公共数据初始值设定项(){
Database.SetInitializer(null);
试一试{
使用(var context=new DataContext()){
如果(!context.Database.Exists())
{
((IObjectContextAdapter)context.ObjectContext.CreateDatabase();
}
}
}
捕获(例外情况除外){
抛出新的InvalidOperationException(“无法初始化数据数据库”,ex);
}
}

公共类DataContext:DbContext
{
public DataContext():base(“xxdata”){}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
公共数据库集应用程序{get;set;}
}
代码在我单步执行时执行,但似乎没有创建任何数据库文件(SQLServerExpress)


是否有明显的错误?

创建一个继承类,如下所示

public class DataContextInitializer : DropCreateDatabaseAlways<DataContext>
    {
        protected override void Seed(DataContext context)
        {
          //Seed data if you want
        }
    }

刚刚试过,它说“有一些无效的论点”。我将对此进行更深入的研究。@Gemma查看我的更新。以前,您没有从某个类继承该类,如
DropCreateDatabaseAlways
,现在可以根据需要放置该类。并且,您不需要在这个类中添加任何其他详细信息,因为您已经将
CreateDatabase
。EF将自动为您创建它。我尝试过这个,但它似乎没有做什么。只有在Seed方法中有一些东西时它才会起作用吗?也许我需要DataContextInitializer中的构造函数?@Gemma不,如果你不做种子设定就可以了。告诉我你什么时候想要数据库?在您尝试添加某些内容之前,不会创建它。尝试通过代码将
应用程序
添加到数据库中。只有在创建上下文类的实例或尝试在数据库中添加某些内容时,才会创建数据库。试试这个,我想这是你的问题。@Gemma很高兴帮助你…:)
public class DataContextInitializer : DropCreateDatabaseAlways<DataContext>
    {
        protected override void Seed(DataContext context)
        {
          //Seed data if you want
        }
    }
protected void Application_Start()
{
    //Add your database initializer code 
    Database.SetInitializer(new DataContextInitializer());
}