コード例 #1
0
ファイル: UsersRepository.cs プロジェクト: xmmjacky/scmcore
        public void DapperExtensionsLambda()
        {
            //SELECT [Users].[UserId],
            //       [Users].[LoginName],
            //       [Users].[Password]
            //FROM   [Users]
            //WHERE  [Users].[LoginName] = @LoginName_1
            var fromDemo = this.LambdaQuery()
                           .Select(p => new { p.UserId, p.LoginName, p.Password })       //不支持As
                           .Where(p => p.LoginName == "很好很强大");


            //支持 返回  DataReader、DataSet、DataTable、 泛型集合
            fromDemo.ToDataReader();
            fromDemo.ToDataSet();
            fromDemo.ToDataTable();
            IEnumerable <UsersModel> list = fromDemo.ToList <UsersModel>();



            var select = new Select <UsersEntity>();

            select.AddSelect(p => p.Remark.As("Remark"));   //Expression<Func<T, bool>>类型支持     as 语法
            fromDemo = this.LambdaQuery().AddSelect(select);



            //      SELECT [Users].[UserId],
            //       [Users].[LoginName],
            //       [Users].[Password],
            //       [Users].[Status],
            //       [Users].[CreateTime],
            //       [Users].[UpdateTime],
            //       [Users].[Remark]
            //FROM   [Users]
            //WHERE  (
            //           (
            //               ([Users].[LoginName] LIKE @LoginName_1)
            //               AND ([Users].[Status] NOT IN (@Status_2, @Status_3, @Status_4))
            //           )
            //           AND ([Users].[CreateTime] >= @CreateTime_5)
            //       )
            //       AND ([Users].[UpdateTime] IS NOT NULL)
            var fromDemo2 = this.LambdaQuery()
                            .Where(p => p.LoginName.Like("%王老五%") &&                         //like
                                   p.Status.NotIn <string>("1", "2", "3") &&                 //in  or  not in
                                   p.CreateTime >= Convert.ToDateTime("2016-01-21") &&       //时间比较
                                   p.UpdateTime.IsNotNull()                                  //is null
                                   );



            //SELECT [Users].[UserId],
            //       [Users].[LoginName],
            //       [Users].[Password],
            //       [Users].[Status],
            //       [Users].[CreateTime],
            //       [Users].[UpdateTime],
            //       [Users].[Remark]
            //FROM   [Users]
            //WHERE  (
            //           (
            //               ([Users].[LoginName] LIKE @LoginName_1)
            //               AND ([Users].[Status] = @Status_2)
            //           )
            //           OR ([Users].[UserId] = @UserId_3)
            //       )
            var where = new Where <UsersEntity>();
            where.And(p => p.LoginName.Like("%李二蛋%") && p.Status == 1);
            where.Or(p => p.UserId == 1);
            var fromDemo3 = this.LambdaQuery().Where(where);



            //SELECT [Users].[UserId],
            //       [Users].[LoginName],
            //       [Users].[Password],
            //       [Users].[Status],
            //       [Users].[CreateTime],
            //       [Users].[UpdateTime],
            //       [Users].[Remark]
            //FROM   [Users]
            //ORDER BY
            //       CreateTime  ASC,
            //       UpdateTime  ASC,
            //       UserId         DESC
            var fromDemo4 = this.LambdaQuery()
                            .OrderBy(p => new { p.CreateTime, p.UpdateTime })
                            .AddOrderByDescending(p => new { p.UserId });



            //"SELECT * FROM [Users] INNER JOIN UserInfo ON ([Users].[UserId] = [UserInfo].[UserId]) "
            var fromDemo5 = this.LambdaQuery()
                            .InnerJoin <UserInfoEntity>((u, ui) => u.UserId == ui.UserId);



            //SELECT DISTINCT TOP 100 *
            //FROM   [Users] WITH (NOLOCK) INNER
            //       JOIN UserInfo WITH (NOLOCK)
            //            ON  ([Users].[UserId] = [UserInfo].[UserId])
            var fromDemo6 = this.LambdaQuery()
                            .InnerJoin <UserInfoEntity>((u, ui) => u.UserId == ui.UserId).
                            WithNoLock().
                            Top(100)
                            .Distinct();



            //SELECT TOP(10) [_proj].*
            //FROM   (
            //           SELECT ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) AS [_row_number],
            //                  *
            //           FROM   [Users] WITH (NOLOCK) LEFT
            //                  JOIN UserInfo WITH (NOLOCK)
            //                       ON  ([Users].[UserId] = [UserInfo].[UserId])
            //           WHERE  ([Users].[UserId] > @UserId_1)
            //                  AND ([UserInfo].[Sex] = @Sex_2)
            //       ) [_proj]
            //WHERE  [_proj].[_row_number] >= @_pageStartRow
            //ORDER BY
            //       [_proj].[_row_number]
            var fromDemo7 = this.LambdaQuery()
                            .LeftJoin <UserInfoEntity>((u, ui) => u.UserId == ui.UserId).WithNoLock()
                            .Where <UserInfoEntity>((u, ui) => u.UserId > 1 && ui.Sex == 1)
                            // .Page(2, 10);
                            .ToPageList(2, 10);



            //DELETE
            //FROM   [Users]
            //WHERE  ([Users].[Status] = @Status_1)
            //       AND (
            //[Users].[CreateTime] > @CreateTime_2
            var deleteDemo = this.LambdaDelete()
                             .Where(p => p.Status == 1 && p.CreateTime > DateTime.Now);


            //UPDATE [Users]
            //SET    [Users].[Remark] = @Remark_3
            //WHERE  [Users].[Status] = @Status_4
            var updateDemo = this.LambdaUpdate()
                             .Set(p => p.Remark == "Remark")
                             .Where(p => p.Status == 1);
        }