我试图在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管理工作室(并刷新)时,没有新的数据库..
我在这里做错了吗? :/
答案 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());