示例#1
0
        static void Main(string[] args)
        {
            var dbContext = new MyDbContext("Data Source=.;Database=Ruanmou.Bbs;User Id=sa;Password=790825", () => 1);



            //var topic = dbContext.Load<Topic>(14);
            //topic.Title = "测试修改的主题";
            //dbContext.Update(topic);

            //topic = dbContext.Load<Topic>(14);
            //Console.WriteLine(topic.Title);

            //var data = dbContext.ToDo(conn =>
            //{
            //    var sql = "SELECT a.*,b.* FROM Topics a LEFT JOIN Users b ON a.CreateBy=b.Id";
            //    return conn.Query<Topic, User, Topic>(sql, (t, u) =>
            //    {
            //        t.Creator = u;
            //        return t;
            //    });
            //});

            var data = dbContext.PageList <Topic, User>(
                2,
                3,
                "Topics LEFT JOIN Users ON Topics.CreateBy=Users.Id",
                "Topics.*,Users.*",
                (t, u) => {
                t.Creator = u;
                return(t);
            },
                SoftDeleteConditionBuilder.New("Topics").AndEqual("CreateBy", 1),
                SortBuilder.New().OrderByDesc("Id", "Topics"),
                out var total
                );

            Console.WriteLine($"记录总数:{total}");
            Console.WriteLine(JsonConvert.SerializeObject(data));

            //foreach (var topic in data)
            //{
            //    Console.WriteLine($"{topic.Id} {topic.Title} {topic.Creator.NickName}");
            //}

            //Console.WriteLine(total);

            //var builder = SoftDeleteConditionBuilder.New();
            //builder.AndEqual("ClazzId", 1);

            //Console.WriteLine(builder.ToCondition());

            //var topics = dbContext.Fetch<Topic>(ConditionBuilder.New(), SortBuilder.New());

            //foreach (var topic in topics)
            //{
            //    Console.WriteLine(topic.Title);
            //}

            //var result = dbContext.Delete<Topic>(8);
            //if (result)
            //{
            //    Console.WriteLine("删除成功");
            //}

            //var topics = dbContext.Fetch<Topic>(ConditionBuilder.New(), SortBuilder.New());

            //foreach (var topic in topics)
            //{
            //    Console.WriteLine($"{topic.Id} {topic.Title}");
            //}

            //var result = dbContext.Set<Topic>(FieldValuePairs.New().Add("Title=Title+'abcde'"), ConditionBuilder.New().AndEqual("Id", 14));

            //var rows = dbContext.ToDo(conn =>
            //{
            //    conn.Open();
            //    var result = 0;
            //    using (var trans = conn.BeginTransaction())
            //    {
            //        try
            //        {
            //            var i1 = conn.Set<Topic, int>(
            //                FieldValuePairs.New().Add("Title=Title+'1234'"),
            //                ConditionBuilder.New().AndEqual("Id", 14),
            //                null,
            //                trans);

            //            var i2 = conn.Set<Topic, int>(
            //                FieldValuePairs.New().Add("Title=Title+'12345678'"),
            //                ConditionBuilder.New().AndEqual("Id", 13),
            //                null,
            //                trans);

            //            result = i1 + i2;
            //            trans.Commit();
            //        }
            //        catch (Exception e)
            //        {
            //            Console.WriteLine(e.Message);
            //            trans.Rollback();
            //        }
            //        finally
            //        {
            //            conn.Close();
            //        }
            //    }

            //    return result;
            //});

            //var result = dbContext.TransToDo((conn, trans) =>
            //{
            //    conn.Set<Topic, int>(
            //        FieldValuePairs.New().Add("Title=Title+'好的'"),
            //        ConditionBuilder.New().AndEqual("Id", 14),
            //        null,
            //        trans);

            //    conn.Set<Topic, int>(
            //        FieldValuePairs.New().Add("Title=Title+'不好'"),
            //        ConditionBuilder.New().AndEqual("Id", 13),
            //        null,
            //        trans);
            //});

            //Console.WriteLine(result);

            //var topics = dbContext.PageList<Topic>(1, 3, ConditionBuilder.New(), SortBuilder.New(), out var total);

            //Console.WriteLine($"总计 {total} 条");
            //foreach (var topic in topics)
            //{
            //    Console.WriteLine($"{topic.Id} {topic.Title}");
            //}

            //var sw = new Stopwatch();

            //var input = new TopicSearchInput
            //{
            //    Key = "测试",
            //    ChannelId = 10,
            //    CreateAtStart = DateTime.Today
            //};

            //var count = 10000;

            //sw.Start();
            //var where = "";
            //for (int i = 0; i < count; i++)
            //{
            //    where = "1=1";
            //    var idx = 0;
            //    var parameters = new List<SqlParameter>();

            //    if (!string.IsNullOrWhiteSpace(input.Key))
            //    {
            //        where += $" AND (Title LIKE '%{input.Key}%' OR Content LIKE '%{input.Key}%')";
            //        parameters.Add(new SqlParameter($"@__p_{idx++}", input.Key));
            //    }

            //    if (input.ChannelId > 0)
            //    {
            //        where += $" AND ChannelId={input.ChannelId}";
            //        parameters.Add(new SqlParameter($"@__p_{idx++}", input.Key));
            //    }

            //    if (input.CreateAtStart != null)
            //    {
            //        where += $" AND CreateAt>'{input.CreateAtStart.ToString()}'";
            //        parameters.Add(new SqlParameter($"@__p_{idx++}", input.Key));
            //    }

            //    if (input.CreateAtEnd != null)
            //    {
            //        where += $" AND CreateAt<'{input.CreateAtStart.ToString()}'";
            //        parameters.Add(new SqlParameter($"@__p_{idx++}", input.Key));
            //    }

            //    //Console.WriteLine(where);
            //}
            //sw.Stop();
            //Console.WriteLine($"第一种:{where} \r\n {sw.ElapsedMilliseconds}");

            //var builder2 = ConditionBuilder.New();

            //sw.Reset();
            //sw.Start();
            //var where2 = "";
            //for (var j = 0; j < count; j++)
            //{
            //    var builder = ConditionBuilder.New();

            //    if (!string.IsNullOrWhiteSpace(input.Key))
            //    {
            //        builder.AndContains(new[] { "Title", "Contents" }, input.Key);
            //    }

            //    if (input.ChannelId > 0)
            //    {
            //        builder.AndGreaterThan("ChannelId", input.ChannelId);
            //    }

            //    if (input.CreateAtStart != null)
            //    {
            //        builder.AndGreaterThanEqual("CreateAt", input.CreateAtStart);
            //    }

            //    if (input.CreateAtEnd != null)
            //    {
            //        builder.AndLessThanEqual("CreateAt", input.CreateAtEnd);
            //    }

            //    where2 = builder.ToCondition();
            //}
            //sw.Stop();
            //Console.WriteLine($"第二种:{where2} \r\n {sw.ElapsedMilliseconds}");

            Console.Read();
        }