美文网首页
2、EF的使用CRUD

2、EF的使用CRUD

作者: 高调的小丑 | 来源:发表于2018-12-03 09:59 被阅读7次

这部分基本都是代码,延续了初步认识EF中code first的代码。

新增数据

using (UserContext db = new UserContext())
{
    var userId=  db.Users.Where(a => a.UserName == "Curry").FirstOrDefault().ID;
    var roleId = db.Roles.Where(a => a.RoleName == "Admin").FirstOrDefault().ID;
    
    UserRole ur = new UserRole();
    ur.UserID = userId;
    ur.RoleID = roleId;
    db.UserRoles.Add(ur);
    
    db.SaveChanges();
}

这边先查询出用户名为Curry的ID,角色为Admin的ID,将两者关联

读取数据

这部分已经介绍过

using (UserContext db = new UserContext())
{
    var user = from i in db.Users
               where i.UserName == "Curry"
               select i;
    var curry = user.FirstOrDefault();
    Console.WriteLine("{0}的密码是{1}", curry.UserName, curry.Password);
}

复杂的关联查询

using (UserContext db = new UserContext())
{
    var user = (from i in db.Users
               join o in db.UserRoles on i.ID equals o.UserID
               join p in db.Roles on o.RoleID equals p.ID
               where i.UserName == "Curry"
               select new
               {
                    name=i.UserName,
                    role=p.RoleName
               }).FirstOrDefault();
    Console.WriteLine("{0}的角色是{1}", user.name, user.role);
}

修改数据

using (UserContext db = new UserContext())
{
    var user = db.Users.FirstOrDefault(a => a.UserName == "Curry");
    user.Password = "123asd";
    db.SaveChanges();
}

删除数据

using (UserContext db = new UserContext())
{
    var user = db.Users.FirstOrDefault(a => a.UserName == "Jack");
    db.Users.Remove(user);
    db.SaveChanges();
}

事务

EF中使用事务有两种方法.BeginTransaction()和TransactionScope类

using (UserContext db = new UserContext())
{
    var tran = db.Database.BeginTransaction();
    try
    {
        var user = db.Users.FirstOrDefault(a => a.UserName == "Jack");
        db.Users.Remove(user);
        db.SaveChanges();
        tran.Commit();//提交事务
    }
    catch (Exception ex)
    {
        tran.Rollback();//回滚
        throw new Exception(ex.ToString());
    }
}

使用TransactionScope类首先要引用System.Transactions.dll

using (TransactionScope scope = new TransactionScope())  
{  
  //具体代码内容
    scope.Complete();  
} 
//程序走出了using代码块如果还没调用Complete(),那么就会启动回滚

相关文章

网友评论

      本文标题:2、EF的使用CRUD

      本文链接:https://www.haomeiwen.com/subject/sliecqtx.html