Exemplo n.º 1
0
        public static void Show()
        {
            ///一次SaveChanges  多个数据操作都生效了
            ///事务
            //using (EFCoreMigrationContext context = new EFCoreMigrationContext())
            //{
            //    SysUserInfo sysUserInfo1 = context.SysUserInfo.FirstOrDefault(a => a.Id == 6);
            //    SysUserInfo sysUserInfo2 = context.Set<SysUserInfo>().Find(5);
            //    sysUserInfo1.Name += "-AA";
            //    sysUserInfo2.Name += "-BB";
            //    context.SaveChanges();
            //}

            ///DbContext SaveChanges 事务提交  事务提交
            ///事务特点:要不都成功  要么都知道
            //using (EFCoreMigrationContext context = new EFCoreMigrationContext())
            //{
            //    SysLog log = context.SysLog.FirstOrDefault(l => l.Id == 1);
            //    context.SysLog.Remove(log);
            //    SysUserInfo sysUserInfo1 = context.SysUserInfo.FirstOrDefault(a => a.Id == 6);
            //    SysUserInfo sysUserInfo2 = context.Set<SysUserInfo>().Find(5);
            //    sysUserInfo1.Name += "-AA";
            //    sysUserInfo2.Name += "-BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB";

            //    context.SysLog.Add(new SysLog()
            //    {
            //        UserName = "******",
            //         Introduction="描述一下"
            //    });

            //    context.SaveChanges();
            //}

            //1.单例 DbContext 整个进程中就只有一个实例    不行;
            //2.多线程中  是不是可以使用同一个DbContext 实例?  一般情况下不要使用同一个实例;除非(特定业务下)

            //一个请求一个DbContext实例!

            #region  扩展SaveChanges
            {
                //using (EFCoreMigrationContext context = new EFCoreMigrationContext())
                //{
                //    context.SysLog.Add(new SysLog()
                //    {
                //        UserName = "******",
                //        Introduction = "描述一下",
                //        CreateTime = DateTime.Now
                //    });

                //    context.SaveChanges();

                //    SysLog log = context.SysLog.OrderByDescending(a => a.Id).FirstOrDefault();
                //    log.UserName = "******";
                //    //log.LastModifyTime = DateTime.Now;
                //    //log.CreateTime
                //    //每修改一次都需要重新设置值
                //    ///能不能从框架层面扩展后来自动维护呢?
                //    context.SaveChanges();
                //}
            }

            #endregion

            {
                /////如果我需要把两个SaveChange 事务一下的?
                using (EFCoreMigrationContext context = new EFCoreMigrationContext())
                {
                    IDbContextTransaction tans = null;
                    try
                    {
                        tans = context.Database.BeginTransaction(); //框架对事务的支持
                        context.SysLog.Add(new SysLog()
                        {
                            UserName     = "******",
                            Introduction = "第一次SaveChanges",
                            CreateTime   = DateTime.Now
                        });
                        context.SaveChanges();

                        context.SysLog.Add(new SysLog()
                        {
                            UserName     = "******",
                            Introduction = "第二次SaveChanges",
                            CreateTime   = DateTime.Now
                        });
                        context.SaveChanges();
                        tans.Commit();  //代码只有执行到这里事务才能生效
                    }
                    catch (Exception ex)
                    {
                        if (tans != null)
                        {
                            tans.Rollback();//事务回退
                        }
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        tans.Dispose();
                    }
                }
            }
            //{

            //    ///如果我需要把两个SaveChange 事务一下的?
            //    using (EFCoreMigrationContext context1 = new EFCoreMigrationContext())  //招商银行的数据库
            //    using (EFCoreMigrationContext context2 = new EFCoreMigrationContext())////腾讯平台的数据库
            //    {
            //        //需要引入System.Transactions.Local.dll
            //        using (TransactionScope transactionScope = new TransactionScope())
            //        {
            //            try
            //            {
            //                context1.SysLog.Add(new SysLog()
            //                {
            //                    UserName = "******",
            //                    Introduction = "context1新增一条测试数据",
            //                    CreateTime = DateTime.Now
            //                });
            //                context1.SaveChanges();

            //                context2.SysLog.Add(new SysLog()
            //                {
            //                    UserName = "******",
            //                    Introduction = "context2新增一条测试数据",
            //                    CreateTime = DateTime.Now
            //                });
            //                context2.SaveChanges();
            //                transactionScope.Complete();//提交事务

            //            }
            //            catch (Exception ex)
            //            {
            //                Console.WriteLine(ex.Message);
            //            }
            //        }
            //    }
            //}
        }
Exemplo n.º 2
0
        public static void Show()
        {
            #region 其他查询
            using (EFCoreMigrationContext dbContext = new EFCoreMigrationContext())
            {
                {
                    var list = dbContext.SysUserInfo.Where(u => 1 == 1 && !(new int[] { 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 17 }.Contains(u.Id)));//in查询
                    foreach (var user in list)
                    {
                        System.Console.WriteLine(user.Name);
                    }
                }
                {
                    var list = from u in dbContext.SysUserInfo
                               where new int[] { 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 17 }.Contains(u.Id)
                    select u;

                    foreach (var user in list)
                    {
                        System.Console.WriteLine(user.Name);
                    }
                }
                {
                    var list = dbContext.SysUserInfo.Where(u => new int[] { 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 17 }.Contains(u.Id))
                               .OrderBy(u => u.Id)
                               .Select(u => new
                    {
                        Name = u.Name,
                        Pwd  = u.Password
                    }).Skip(3).Take(5);
                    foreach (var user in list)
                    {
                        System.Console.WriteLine(user.Name);
                    }
                }
                {
                    var list = dbContext.SysUserInfo.Where(u => u.Name.StartsWith("Richard") && u.Name.EndsWith("老师"))
                               .Where(u => u.Name.EndsWith("老师"))
                               .Where(u => u.Name.Contains("Richard"))
                               .Where(u => u.Name.Length < 10)
                               .OrderBy(u => u.Id);

                    foreach (var user in list)
                    {
                        System.Console.WriteLine(user.Name);
                    }
                }
                {
                    var list = from u in dbContext.SysUserInfo
                               join c in dbContext.SysUserRoleMapping on u.Id equals c.SysUserId
                               where new int[] { 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 17 }.Contains(u.Id)
                    select new
                    {
                        Name   = u.Name,
                        Pwd    = u.Password,
                        RoleId = c.SysRoleId
                    };
                    foreach (var user in list)
                    {
                        System.Console.WriteLine("{0} {1}", user.Name, user.Pwd);
                    }
                }
                {
                    var list = from u in dbContext.SysUserInfo
                               join m in dbContext.SysUserRoleMapping on u.Id equals m.SysUserId
                               join r in dbContext.SysRole on m.SysRoleId equals r.Id
                               where new int[] { 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 17 }.Contains(u.Id)
                    select new
                    {
                        Name     = u.Name,
                        Pwd      = u.Password,
                        RoleId   = m.SysRoleId,
                        RoleName = r.Name
                    };
                    foreach (var user in list)
                    {
                        System.Console.WriteLine("{0} {1} {2}", user.Name, user.Pwd, user.RoleName);
                    }
                }
            }

            using (EFCoreMigrationContext dbContext = new EFCoreMigrationContext())
            {
                {
                    try
                    {
                        string       sql       = "Update Zhaxoxi.SysUser Set UserName='******' WHERE Id=@Id";
                        SqlParameter parameter = new SqlParameter("@Id", 1);
                        dbContext.Database.ExecuteSqlRaw(sql, parameter);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }

            //using (EFCoreMigrationContext dbContext = new EFCoreMigrationContext())
            //{
            //    {
            //        DbContextTransaction trans = null;
            //        try
            //        {
            //            trans = dbContext.Database.BeginTransaction();
            //            string sql = "Update [SysUserInfo] Set Name='王一-小王子' WHERE Id=@Id";
            //            SqlParameter parameter = new SqlParameter("@Id", 10);
            //            dbContext.Database.ExecuteSqlCommand(sql, parameter);
            //            trans.Commit();
            //        }
            //        catch (Exception ex)
            //        {
            //            if (trans != null)
            //                trans.Rollback();
            //            throw ex;
            //        }
            //        finally
            //        {
            //            trans.Dispose();
            //        }
            //    }
            //    {
            //        DbContextTransaction trans = null;
            //        try
            //        {
            //            trans = dbContext.Database.BeginTransaction();
            //            string sql = "SELECT * FROM [SysUserInfo] WHERE Id=@Id";
            //            SqlParameter parameter = new SqlParameter("@Id", 1);



            //            List<SysUserInfo> userList = dbContext.Database.SqlQuery<SysUserInfo>(sql, parameter).ToList();
            //            trans.Commit();
            //        }
            //        catch (Exception ex)
            //        {
            //            if (trans != null)
            //                trans.Rollback();
            //            throw ex;
            //        }
            //        finally
            //        {
            //            trans.Dispose();
            //        }
            //    }
            //}
            #endregion
        }