.Net EntityFramwork6.0 EF框架开发入门

2018-02-09 19:22:58来源:cnblogs.com作者:jay-lee人点击

分享
一、环境开发环境:Sqlserver2008 R2、Visual Studio2012 二、准备工作1、新建MVC空项目2、通过NuGet获取 EntityFramework 包 操作截图:   三、代码实现   1.建立实体类   
  [Table("User")]    public class User    {        [Display(Name="id")]        public int Id {get;set;}        [Display(Name="UserName")]        [Required(ErrorMessage="用户名必填")]        public string UserName { get; set; }        [Display(Name="Password")]        public string Password { get; set; }    }

  

2.构建数据库访问类   a)、继承DbContext   b)、创建数据库连接字符串,字符串名称与a)步骤类名称一致,也可不一致(需指定数据库访问串)
  public class DemoConnectionContext : DbContext    {        public DbSet<User> dbuser { get { return Set<User>(); } }        public DemoConnectionContext()        : base("name=DemoConnectionContext") //指定数据库访问串        {        }        static DemoConnectionContext()        {            Database.SetInitializer<DemoConnectionContext>(new  DropCreateDatabaseIfModelChanges<DemoConnectionContext>());        }    }

3.数据库操作

//声明数据库操作类
DemoConnectionContext db = new DemoConnectionContext();

  a)、增加数据

User user = new Models.User{UserName = "jay", Password = "123"};db.dbuser.Add(user);db.SaveChanges();

   b)、查询数据

//指定ID查询     var userObj=db.dbuser.Find(1);  //写法一     var userObj = db.dbuser.Where(u => u.Id == 1).FirstOrDefault();  //写法二    //写法三     var userObj = (from u in db.dbuser                          where u.Id == 1                       select u).ToList();

  c)、更新数据

      //更新表            var userObj = (from u in db.dbuser                           where u.UserName == "jay"                           select u).ToList();            userObj[0].Password = "1234";            db.dbuser.Attach(userObj[0]);            //更新指定列            var setEntry = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.GetObjectStateEntry(userObj[0]);            setEntry.SetModifiedProperty("Password");            db.SaveChanges();

  d)、删除数据

  

      //删除数据 指定ID即可            User userObj = new User { Id = 1 };            db.dbuser.Attach(userObj);//附加对象            db.dbuser.Remove(userObj);//删除对象            db.SaveChanges();

  e)、事物操作 多表操作,操作放在 TransactionScope

  

       try            {                //事物 多表操作,操作放在 TransactionScope                using (var trac = new TransactionScope())                {                    User user = new User { UserName = "jack", Password = "1234" };                    db.dbuser.Add(user);                    //throw new Exception("抛出异常");                    user = new User { UserName = "David", Password = "1234" };                    db.dbuser.Add(user);                    db.SaveChanges();                    trac.Complete();//事物提交,如未执行该方法,出事务作用范围自动回滚                }            }            catch (Exception ex)            {                throw;            }

   f:)、T-SQL查询
     1) sql 查询,实体类

     //sql 查询,实体类     var userList = db.Database.SqlQuery<User>("select id,UserName,Password from  [User]").ToList();

     2)指定对象查询实体

  var userList= db.dbuser.SqlQuery("select id,UserName,Password from  [User]").ToList();

     3) 执行SQL命令

  db.Database.ExecuteSqlCommand("update [User] set UserName='Michel' where UserName='jay'");
常见错误解答1、错误信息:The model backing the 'DemoConnectionContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).错误信息大体意思为:因实体类属性或实体关系、实体名称发生变化,EF脚本需重新更新数据库信息与实体保持一致。解决方法:1.备份数据库,关闭所有数据库操作,EF框架自动更新脚本(通常删除库后重新创建库,如果数据库已经在使用,并且不想删除现有数据,不建议使用运行脚本)                   2.指定不同步更新数据库,可设置为  Database.SetInitializer<DemoConnectionContext>(null);,手动更新数据库与实体类保持一致 

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台