当前位置:编程学习 > C#/ASP.NET >>

CodeFirst数据库重建问题,懂的进


public class UserModel
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public virtual ClassModel UserClass { get; set; }
    }

    public class ClassModel
    {
        public int ID { get; set; }
        public string ClassName { get; set; }
        public virtual List<UserModel> classUser { get; set; }
    }

    public class myDBContext : DbContext
    {      

        public DbSet<UserModel> UserModels { get; set; }
        public DbSet<ClassModel> ClassModels { get; set; }
    }

    public class myDBContextInit : CreateDatabaseIfNotExists<myDBContext>
    {
        protected override void Seed(myDBContext DB)
        {
            ClassModel class1 = new ClassModel { ClassName = "Class1" };
            DB.ClassModels.Add(class1);
            DB.UserModels.Add(new UserModel { Name = "User1", UserClass = class1 });
            DB.UserModels.Add(new UserModel { Name = "User2", UserClass = class1 });
            DB.SaveChanges();
        }
    }


Global.asax  appstart   

Database.SetInitializer(new myDBContextInit());


第一次运行时候创建了 LocalDB,然后,我手动删除了 app_data下面的mdf数据库文件,再重新运行app,
没有自动重建mdf文件,而是报错

Cannot attach the file '\App_Data\Web.myDBContext.mdf' as database 'Web.myDBContext'.

按理我继承 CreateDatabaseIfNotExists 应该是会重新创建的!

Default.aspx页面

            myDBContext DB = new myDBContext();
            foreach (ClassModel c in DB.ClassModels.ToList())
            {
                Response.Write("c:"+c.ClassName);
                foreach (UserModel u in c.classUser)
                {
                    Response.Write("<br />---u:" + u.Name);
                }
            }
--------------------编程问答-------------------- 知道codefirst,但从来没用过。。。。。
要DDD也没必要codefirst吧。。。。 --------------------编程问答-------------------- 看下这篇教程:http://msdn.microsoft.com/en-us/data/jj591621.aspx --------------------编程问答--------------------
引用 2 楼 webdiyer 的回复:
看下这篇教程:http://msdn.microsoft.com/en-us/data/jj591621.aspx


感谢大哥的回复,场景有点不一样,我平时更新数据是用Migrations,但是现在还没用到这一步。

我的场景是这样的,我在vs上创建了用CodeFirst第一次创建了数据库成功,我建立了很多测试数据,现在要把代码移交给其他部门,所以我copy了项目给他们(除了APP_DATA这个文件夹,因为里面有我的私人数据),我想他们运行项目的时候第一次就会创建一个新的数据库了!但我copy了给他们,他们第一次运行一直报无法找到 app_data/xx.mdf 文件,按理我继承了CreateDatabaseIfNotExists ,项目找不到数据库应该会自动重建的,现在不会自动重建,想找出问题在哪里。。。。 --------------------编程问答--------------------
引用 3 楼 livelymoon 的回复:
Quote: 引用 2 楼 webdiyer 的回复:

看下这篇教程:http://msdn.microsoft.com/en-us/data/jj591621.aspx


感谢大哥的回复,场景有点不一样,我平时更新数据是用Migrations,但是现在还没用到这一步。

我的场景是这样的,我在vs上创建了用CodeFirst第一次创建了数据库成功,我建立了很多测试数据,现在要把代码移交给其他部门,所以我copy了项目给他们(除了APP_DATA这个文件夹,因为里面有我的私人数据),我想他们运行项目的时候第一次就会创建一个新的数据库了!但我copy了给他们,他们第一次运行一直报无法找到 app_data/xx.mdf 文件,按理我继承了CreateDatabaseIfNotExists ,项目找不到数据库应该会自动重建的,现在不会自动重建,想找出问题在哪里。。。。

你是怎么用的?看看这个帖子:
http://stackoverflow.com/questions/5414130/entity-framework-code-first-isnt-creating-the-database --------------------编程问答-------------------- @webdiyer

http://pan.baidu.com/share/link?shareid=1697330141&uk=1528043962

项目文件在这里 可以下载下来看看,直接F5就行
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,