代码优先 - 不创建数据库

时间:2014-12-27 15:04:14

标签: asp.net sql-server entity-framework ef-code-first

我试图在ASP.NET中创建一个简单的项目,'代码优先

所以我创建了一个EFDbContext类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace MVCRubenWouters.Models
{
  public class EFDbContext: DbContext
  {
    public EFDbContext() : base("name=rubenwoutersdbCF")
    {
      Database.SetInitializer<EFDbContext>(new EFDbInitializer());
    }
      public DbSet<Types> Types { get; set; }
  }
}

并在&#39; web.config&#39;

中添加了一个连接字符串
<connectionStrings>
    <add name="rubenwoutersdbCF" connectionString="Data Source=.\SQLSERVER2012;Initial Catalog=rubenwoutersdbCF;Integrated Security=True;MultipleActiveResultSets=true"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

然后我创建了一个类&#34; EFDbInitializer来向数据库添加内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MVCRubenWouters.Models
{
  public class EFDbInitializer: DropCreateDatabaseAlways<EFDbContext>
  {
    protected override void Seed(EFDbContext context)
    {
      Types t1 = new Types()
      {
        PK_TypeNr = 1,
        TypeKeuken = "Belgisch",
        TypeZaak = "Restaurant",
        Vegetarisch = false
      };

      context.Types.Add(t1);
      context.SaveChanges();
    }
  }
}

当我运行项目并转到SQL Server管理工作室(并刷新)时,没有新的数据库..

我在这里做错了吗? :/

2 个答案:

答案 0 :(得分:0)

我建议您在SQL Server中创建数据库,构建表,然后使用代码填充它们。

答案 1 :(得分:0)

在我的系统上运行的方式是在Application_Start()

中强制数据库

试试这个:

Database.SetInitializer(new CreateDatabaseIfNotExists<EFDbContext>());
        var context = new EFDbContext("Data Source=(local);Integrated Security=SSPI;Initial Catalog=myDB;");
        context.Database.Initialize(true);

我认为永远不会调用种子方法,以确保设置制动点

您可以开发自定义初始化程序,如下面的链接:

Seed in entity framework然后在Application_Start()

中调用它
 Database.SetInitializer<EFDbContext>(new EFDbInitializer());