Exemple #1
0
        protected void Button2_Click(object sender, EventArgs e)
        {
            book_shop3Entities bkDBContext = new book_shop3Entities();

            //即使是有where 条件判断 也是一个集合 注意一下 linq表达式的写法
            //多写写 linq 多 写写 sql 语句 习惯了就好了

            //使用profile 就能够捕获 查询的语句
            var userInfo = from user in bkDBContext.UserInfo
                           where user.ID > 123
                           select user;

            //打一个断点 看一下 什么时候执行  小套路 小技巧

            //公司的数据库 还不能够追踪 。。那就算了 自己的数据库 查询 多玩玩就可以了

            //lazing loading  提前加载 有3中方式 选择自己合适的
            //代码里面没有错误 就是连警告都是没有的。
            //把需要的数据库文件 也配置到 APP_Data里面 。
            //int a = 9;

            foreach (var user in userInfo)
            {
                Response.Write(user.UserName);
            }
        }
Exemple #2
0
        //着一天的内容只是一个简单的了解 关键还是要 后面项目当中的应用

        //数据的培训设置联系 还是要敲很多的代码 来实践 和联系 使用

        //这他妈的我自己想改一点东西 都不能成功 我也是日了狗了

        protected void Button4_Click(object sender, EventArgs e)
        {
            book_shop3Entities db = new book_shop3Entities();
            var userInfoList      = from u in db.UserInfo
                                    where u.ID == 93
                                    select u;


            //new List<UserInfo>
            //{
            //    u.ID,
            //    u.UserName,
            //    u.UserPass,
            //    u.RegTime,
            //    u.Email
            //};

            //修改数据 没有找到 Edit 的方法  连接查询 其他 重要的 但是不太天天使用的方法
            //大的方向要努力 要加油
            UserInfo user = userInfoList.FirstOrDefault();

            user.UserPass        = "******";
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
        }
Exemple #3
0
        // 反过来是 1对 1的关系 关系是双向的  1个订单 是一个用户 根据订单还可以反过来查询 用户的信息
        protected void Unnamed4_Click(object sender, EventArgs e)
        {
            book_shop3Entities db = new book_shop3Entities();
            var query             = (from o in db.Orders
                                     where o.OrderId == "2012021309541370391"
                                     select o).FirstOrDefault();

            // 只要是一个类 就可以一直的往下去点 去使用 就真的比较的方便了。。、。
            Response.Write(query.Users.Address);
        }
Exemple #4
0
        //查询某一个用户的订单信息
        protected void Unnamed3_Click(object sender, EventArgs e)
        {
            //这个查询就很写的就很easy 让你少些了很多的代码 会使用之后就会感觉很方便
            book_shop3Entities db = new book_shop3Entities();
            var queryOrder        = from o in db.Orders
                                    where o.UserId == 91
                                    select o;

            foreach (var o in queryOrder)
            {
                Response.Write(o.OrderId + "<br/>");
            }
        }
Exemple #5
0
        //对某一个类型经常操作的内容 扩展一个方法 。以后这一个类型就可以. 出来这样就比较的方便
        //IQualable Lamdba 这个类型 李曼添加了很多的扩展方法 重新 听一遍 感觉就不一样了

        protected void Button2_Click(object sender, EventArgs e)
        {
            book_shop3Entities db = new book_shop3Entities();
            //方法的第一参数类型 和返回值类型
            //编译器能够推断出你的类型
            //Func<Users, bool> whereLamda = (Users u) => { return u.Id == 3; };

            //表达式数 这个内容要回头去看。。没有看完的视频都是要看的  表达式树 数据结构的知识 知道是这么一个东西
            // 视频播放的比较快 速度慢一点。。用到的东西 多看看 这个方法的定义 和使用。  自己做一遍 能做出来就OK
            //
            //给委托类型的变量赋值  委托类型已经是定义好了 直接赋值一个lambda表达式就能使用了
            //Func<Users, bool> whereLamda2 = u => { return  u.Id == 3; };

            //为什么包装了一个Express还是一个委托的类型 这个就看不懂了
            //var users = db.Users.Where<Users>(u => u.Id == 12);

            int pageIndex = 2;
            int pageSize  = 10;
            var usersPage = db.Users.Where(u => true)
                            .OrderBy(u => u.Id)
                            .OrderByDescending(u => u.Name)
                            //分页的公式 先记住这么使用 具体怎么推导出来的 有兴趣再去研究
                            //分页从第几条数据开始获取
                            //其实很简单 第一页 是 从第0条开始
                            //第二页是从 第 10条开始 不然 就
                            //第一页 第10条开始了 不想第0条就加个1 轻松搞定
                            //不是难 是有那么一点心理阴影 知道吗 有心理阴影其实挺可怕的
                            //有信仰 就真的听好 。
                            .Skip((pageIndex - 1) * pageSize)
                            .Take(pageSize);

            foreach (var u in usersPage)
            {
                Response.Write(u.Name + "<br/>");
            }


            //分页的公式 (pageIndex - 1) * pageSize

            //1-10  11-20  21-30

            /*
             * 1  0---9
             * 2 (2-1)* 10 = 10 -19
             * 3    20-29
             * 4
             *
             */
        }
Exemple #6
0
        //通过导航属性来添加数据
        protected void Unnamed1_Click(object sender, EventArgs e)
        {
            //给一个用户添加两条订单信息
            book_shop3Entities db = new book_shop3Entities();
            Users user            = new Users()
            {
                Address     = "江苏南京",
                LoginId     = "13",
                LoginPwd    = "3434",
                Mail        = "*****@*****.**",
                Name        = "Allen",
                Phone       = "15258456864",
                UserStateId = 1
            };
            Orders order1 = new Orders()
            {
                Users       = user,
                OrderDate   = DateTime.Now,
                OrderId     = Guid.NewGuid().ToString(),
                PostAddress = "这个是订单的某一个地址",
                state       = 1,
                TotalPrice  = 99.8m,

                //这个插入的 生成的sql数据是怎么样子的 为什么 会没有用 为什么能够关联上???
                //这个是新添加一个用户 及时你添加了UserId 也是没有用的
                //UserId = 88
            };

            Orders order2 = new Orders()
            {
                Users       = user,
                OrderDate   = DateTime.Now,
                OrderId     = Guid.NewGuid().ToString(),
                PostAddress = "这个是订单的某一个地址",
                state       = 1,
                TotalPrice  = 99.8m,
                //UserId = 88
            };

            db.Users.Add(user);
            db.Orders.Add(order1);
            db.Orders.Add(order2);
            db.SaveChanges();
        }
Exemple #7
0
        protected void Button3_Click(object sender, EventArgs e)
        {
            book_shop3Entities db = new book_shop3Entities();

            //先查询想删除的数据 然后执行删除
            //var userInfoList = from u in db.UserInfo
            //                   where u.ID == 127
            //                   select u;

            ////使用First的话 如果没有数据化 是会抛出异常
            //// FirstOrSingal  如果该序列中有多个元素 是会抛出异常的
            ////

            ////如果没有数据的话就会 返回null一般就用这个方法就可以了

            ////每次刷新又会重新提交表单
            //UserInfo userInfo = userInfoList.FirstOrDefault();

            //if (userInfo != null)
            //{
            //    db.UserInfo.Remove(userInfo);
            //    db.SaveChanges();
            //    Response.Write("删除数据成功");
            //}
            //else
            //{
            //    Response.Write("要删除的数据不存在");
            //}

            //如果知道主键ID就可以直接删除数据
            UserInfo user = new UserInfo()
            {
                ID = 110
            };

            //存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。有关了解和处理乐观并发异常的信息,

            //先让EF 找到这个对象 EF管理数据数据的对象 也都是在缓存当中的

            //传入一个对象 对象的类型 然后 添加一个状态的标记
            db.Entry <UserInfo>(user).State = EntityState.Deleted;
            db.SaveChanges();
        }
Exemple #8
0
        //查询每一个用户的 订单 其实 join在EF里面用的都是比较的少 都是导航属性 TOdictionay tolist  分组的方法 多用
        //用习惯了就一样
        //查询所有用户
        protected void Unnamed2_Click(object sender, EventArgs e)
        {
            book_shop3Entities db = new book_shop3Entities();
            var users             = from u in db.Users
                                    select u;

            foreach (var u in users)
            {
                Response.Write(u.Name + "    ");
                foreach (var o in u.Orders)
                {
                    Response.Write(o.OrderId);
                    Response.Write("    " + o.TotalPrice);
                    Response.Write("<br/>");
                }
                Response.Write("<br/>");
                Response.Write("<br/>");
                Response.Write("<hr/>");
            }
        }
Exemple #9
0
        //Where 查询所有用户的数据
        protected void Button3_Click(object sender, EventArgs e)
        {
            book_shop3Entities db = new book_shop3Entities();

            //编译器可以根据前面查询的集合的数据
            //推断出 u 参数变量的类型 自己分析一下他的结构你就会有一些体会
            //都是一些集合数据的操作 这个是常用的 也是必须要掌握的
            //作为.net 开发的话
            var users = db.Users.Where(u => u.Id > 0);

            int count = users.Count <Users>();

            Response.Write(count);
            for (int i = 0; i < users.Count(); i++)
            {
                // Response.Write(users.ElementAt(i).Orders.FirstOrDefault());
                //有些方法 LINQ to Entity是不能使用的。
                //Response.Write(users.ElementAt(i).Name);
            }
        }
Exemple #10
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            ///项目架构使用的什么技术 主要是的是什么
            ///业务有多复杂 如何让我尽快的熟悉业务
            ///我能有哪些权限 能让我做哪些事情
            book_shop3Entities db = null;

            //一次请求不是就结束了吗 这个对象设置了有用什么用的???
            if (HttpContext.Current.Items["db"] == null)
            {
                db = new book_shop3Entities();
            }
            else
            {
                //is 是判断是不是某个类型 as  是尝试转化  不能会怎么样
                //线程内唯一 看着一行代码 有很多内容 单例模式 工厂模式
                //其他的设计模式 理解 不难
                db = HttpContext.Current.Items["db"] as book_shop3Entities;
            }

            //昨天私活不行 景天就可以创建匿名对象了 不知道哪里写错了
            var users = from u in db.Users
                        where u.Id == 153
                        select new
            {
                u.Name,
                u.Phone
            };

            //哪个是集合 哪个 是类 对应的关系 这个是操作集合
            //不是操作数据库 又是有不一样的地方的

            foreach (var u in users)
            {
                Response.Write(u.Name + ":" + u.Phone);
            }

            //使用扩展方法来查询 分页查询数据
            //group by 这个使用 -- 自己多思考 多调试
            //不要被那么长的 注释 下去 分组 一块一块的查看
        }
Exemple #11
0
        protected void Unnamed5_Click(object sender, EventArgs e)
        {
            // 有一个用户ID就可以删除该用户的所有的订单的信息
            //实际工作中的字段 乱七八糟的东西比这个要复杂的多了。而且还要 又快有好的完成 也是没有那么简单的
            //复杂的东西 可以简单化

            //知道有东西 暂时不会是没有关系 常用的东西 多学习 马上学会才是要紧的。

            book_shop3Entities db = new book_shop3Entities();

            //注意下 使用的时候 这个select  投影出来的数据 始终是一个集合。
            var query = (from u in db.Users
                         where u.Id == 216
                         select u).FirstOrDefault();

            while (query.Orders.Count() > 0)
            {
                var order = query.Orders.FirstOrDefault();
                db.Entry <Orders>(order).State = System.Data.Entity.EntityState.Deleted;
            }
            db.SaveChanges();
        }