MVC + EF 无法自动生成数据库了,咋回事
MVC + EF 无法自动生成数据库了,怎么回事?
问题1:
VS2013初始的一个MVC4项目,没有改动
测试运行生成个数据库,然后把数据库删掉
重新测试运行,报错Cannot attach the file
问题2:
VS2013初始的一个MVC4项目,先运行生成一个数据库
然后增加一个model类A,在数据库上下文类UsersContext中添加DbSet<A>,最后增加一些访问控制器和视图(模板自动生成的)
测试,报错,找不到[dbo.A]...查看数据库也没有生成对应的表
好像就第一次有效...接下来就没戏了
新手问题见谅,网上死活找不到解决方案
------解决方案--------------------
http://msdn.microsoft.com/en-us/data/jj554735.aspx
------解决方案--------------------
那是因为你没有释放数据库链接~
当数据库有人链接的时候 是不可以删除数据库的~
验证,你可以在数据库中把数据库删了~
然后运行,看是否会生成数据库~
------解决方案--------------------
友情帮顶!
------解决方案--------------------
我是看这个
http://msdn.microsoft.com/zh-cn/data/ee712907
//数据库初始化是延迟加载的,所以创建一个实例的是不完全满足初始化发生的条件的。必须执行对模型的操作,如查询或添加实体才会发生。
System.Data.Entity.Database.SetInitializer<SmartCardEntities>(new DbSampleData());
dbContext.Database.Initialize(true);//初始化数据库方法
/// <summary>
/// 更加实体创建数据库,并初始化一些数据
/// </summary>
public class DbSampleData : DropCreateDatabaseAlways<SmartCardEntities>
{
protected override void Seed(SmartCardEntities context)
{
base.Seed(context);
(new AuthSampleData()).ListAuth.ForEach(x => context.Auth.Add(x));
(new ManagerSampleData()).ListManager.ForEach(x => context.Manager.Add(x));
}
}
问题1:
VS2013初始的一个MVC4项目,没有改动
测试运行生成个数据库,然后把数据库删掉
重新测试运行,报错Cannot attach the file
问题2:
VS2013初始的一个MVC4项目,先运行生成一个数据库
然后增加一个model类A,在数据库上下文类UsersContext中添加DbSet<A>,最后增加一些访问控制器和视图(模板自动生成的)
测试,报错,找不到[dbo.A]...查看数据库也没有生成对应的表
好像就第一次有效...接下来就没戏了
新手问题见谅,网上死活找不到解决方案
------解决方案--------------------
http://msdn.microsoft.com/en-us/data/jj554735.aspx
------解决方案--------------------
那是因为你没有释放数据库链接~
当数据库有人链接的时候 是不可以删除数据库的~
验证,你可以在数据库中把数据库删了~
然后运行,看是否会生成数据库~
------解决方案--------------------
友情帮顶!
------解决方案--------------------
我是看这个
http://msdn.microsoft.com/zh-cn/data/ee712907
//数据库初始化是延迟加载的,所以创建一个实例的是不完全满足初始化发生的条件的。必须执行对模型的操作,如查询或添加实体才会发生。
System.Data.Entity.Database.SetInitializer<SmartCardEntities>(new DbSampleData());
dbContext.Database.Initialize(true);//初始化数据库方法
/// <summary>
/// 更加实体创建数据库,并初始化一些数据
/// </summary>
public class DbSampleData : DropCreateDatabaseAlways<SmartCardEntities>
{
protected override void Seed(SmartCardEntities context)
{
base.Seed(context);
(new AuthSampleData()).ListAuth.ForEach(x => context.Auth.Add(x));
(new ManagerSampleData()).ListManager.ForEach(x => context.Manager.Add(x));
}
}