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

Posted

技术标签:

【中文标题】我无法使用 SQL Server Express 和实体框架创建数据库文件【英文标题】:I cannot create a database file with SQL Server Express and Entity Framework 【发布时间】:2013-03-10 08:01:48 【问题描述】:

我有以下代码:

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);
            
        

 public class DataContext : DbContext
    
        public DataContext() : base("xxdata")  
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        
        public DbSet<Application> Applications  get; set; 
    

代码在我单步执行时被执行,但似乎没有创建数据库文件(SQL Server Express)。

有什么明显的我做错了吗?

【问题讨论】:

【参考方案1】:

如下创建一个继承类;

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

并将其添加到您的Global.asax

protected void Application_Start()

    //Add your database initializer code 
    Database.SetInitializer(new DataContextInitializer());

【讨论】:

刚试过,它说“有一些无效的参数”。我会再调查一下。 @Gemma 查看我的更新。以前,您没有从 DropCreateDatabaseAlways&lt;T&gt; 之类的类继承该类,现在可以随意放置该类。并检查它是否有效。此外,您不需要在此类中添加任何其他详细信息,因为您已经输入了CreateDatabase。 EF 会自动为你创建。 我试过这个,但它似乎什么也没做。如果我在 Seed 方法中有一些东西,它只会起作用吗?也许我需要 DataContextInitializer 中的构造函数? @Gemma 不,如果你不播种也没关系。告诉我你什么时候找数据库?在您尝试在其中添加某些内容之前,它不会被创建。尝试通过代码将Application添加到数据库中。仅当您创建上下文类的实例或尝试在数据库中添加某些内容时,才会创建数据库。试试这个,我认为这是你的问题。 @Gemma 很高兴为您提供帮助...:)

以上是关于我无法使用 SQL Server Express 和实体框架创建数据库文件的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 SQL Server 2008 Express 实例

无法安装 SQL Server 2008 R2 Express

我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express

SQL Server Express 2012 错误:无法连接到本地数据库

无法从 ASP.NET Web 应用程序连接到我的 SQL Server Express

无法在 SQL Server Express 版本中启用内存中的锁定页面