使用EF生成 my sql、sql server数据库的教程(Code First模式)

Code First指“代码优先”,我们只需要编写代码,来自动创建模型和数据库。

如果数据库已经存在且不允许改动的情况下,DatabaseFirst或ModalFirst较为适合。

1.使用类创建模型。

在Models 文件夹上右击选择新建类,其内容如下:

public class M_user
    {
        /// 
        /// 用户ID
        /// 
        [Key]
        public int Id { get; set; }

        /// 
        /// 昵称
        /// 
        public string Nickname { get; set; }

        /// 
        /// 邮箱账号
        /// 
        public string Email { get; set; }

        /// 
        /// 密码
        /// 
        public string Pwd { get; set; }

        /// 
        /// 姓名
        /// 
        public string Name { get; set; }

        /// 
        /// 性别
        /// 
        public string Sex { get; set; }

        /// 
        /// 年龄
        /// 
        public int Age { get; set; }

        /// 
        /// 头像路径
        /// 
        public string Img { get; set; }

        /// 
        /// 个性签名
        /// 
        public string Signature { get; set; }

        /// 
        /// 用户登录时间
        /// 
        public DateTime Logintime { get; set; }

        /// 
        /// 用户类型 (0 普通用户 1 管理员)
        /// 
        private int User_type { get; set; }
        
    }

2.创建数据上下文类M_UsersContext,用于表示数据库的一个会话,一遍我们查询和保存数据。定义一个派生自System.Data.Entity.DbContext的上下文对象,幷为模型中的每个类公开一个类型化DbSet。同样是在Models文件夹右击创建M_UsersContext类,其内容如下:

/// 
    /// 上下文类
    /// 
    //此句为My Sql数据库时加上即可,为sql server时则不需要
    [DbConfigurationType(typeof(MySqlEFConfiguration))]
    public class M_UsersContext:DbContext
    {
        /// 
        /// 登录信息表
        /// 
        public DbSet M_User { get; set; }    

        

        /// 
        /// 发现数据库模型改变后 自动重建数据库
        /// 
        public M_UsersContext()
        {
            Database.SetInitializer(new InitDatabase());
        }
    }

注意:创建DbContext派生类,需要相关名称空间引用:using System.Data.Entity.

3.生成数据库。

(1)打开Web。config,查找数据库连接字符串“DefaultConnection”,将其修改为:

 
    
    
    
    
  

(2)新建HomeController.cs和Index.cshtml,在HomeController类的Index操作方法中,编写数据访问代码,如下:

public ActionResult Index()
        {
            using(M_UsersContext context=new M_UsersContext())
            {
                //创建和保存M_user 对象
                var user = new M_user();
                user.Email = "152259****@qq.com";
                user.Nickname = "琉璃知我心";
                user.Name = "无极剑圣";
                user.Sex = "男";
                user.Age = 21;
                user.Signature = "我的剑比什么都重要";
                user.Logintime = DateTime.Now;
                //16位大写MD5加密
                var md5 = new MD5CryptoServiceProvider();
                string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes("66666666")), 4, 8);
                t2 = t2.Replace("-", "");
                user.Pwd = t2;
                context.M_User.Add(user);
                context.SaveChanges();

            }
            return View();
        }

(3)启动程序,打开你的SQL Server或My sql 就可以看得你的数据库信息了。

4.如果需要在发现模型改动后自动重建数据库:

在文件夹Models创建InitDatabase类,该类继承DropCreateDatabaseIfModelChanges并重写Seed方法,以便在创建数据库后,自动添加初始化数据。代码如下:

InitDatabase.cs:

public class InitDatabase:DropCreateDatabaseIfModelChanges
    {
        //数据库创建后添加初始化数据
        protected override void Seed(M_UsersContext context)
        {
                //创建和保存M_user 对象
                var user = new M_user();
                user.Email = "152259****@qq.com";
                user.Nickname = "琉璃知我心";
                user.Name = "无极剑圣";
                user.Sex = "男";
                user.Age = 21;
                user.Signature = "我的剑比什么都重要";
                user.Logintime = DateTime.Now;
                //16位大写MD5加密
                var md5 = new MD5CryptoServiceProvider();
                string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes("66666666")), 4, 8);
                t2 = t2.Replace("-", "");
                user.Pwd = t2;
                context.M_User.Add(user);
                context.SaveChanges();

        }
    }

M_UsersContext.cs:

/// 
    /// 上下文类
    /// 
    //此句为My Sql数据库时加上即可,为sql server时则不需要
    [DbConfigurationType(typeof(MySqlEFConfiguration))]
    public class M_UsersContext:DbContext
    {
        /// 
        /// 登录信息表
        /// 
        public DbSet M_User { get; set; }    

        /// 
        /// 注册信息 记录表 
        /// 
        public DbSet Registered { get; set; }

        /// 
        /// 发现数据库模型改变后 自动重建数据库
        /// 
        public M_UsersContext()
        {
            Database.SetInitializer(new InitDatabase());
        }
    }

这样就完成了。

你可能感兴趣的:(使用EF生成 my sql、sql server数据库的教程(Code First模式))