首页新闻招聘找找看知识库
  • 前面做项目,有数据库操作太慢。

    而且,有一些新的程序员,他们对数据库操作的经验比较欠缺,

    而且,.net需要学的东西就非常多,涵盖很多,还要程序员精通数据库,就更加麻烦,没有好多年的经验,

    操作数据库的,一检查就有很多问题。所以,根据需要,我就找到了这个

    简单的,高效,快速,方便的 .net数据库操作方案。非常直观。不需要懂数据库都能开发了。

    找了好久,总算找到了,分享给大家。

     

     1 var Sql = factorySql.Create<Users, InformationCategories>();
     2 
     3 //简单查询,返回实体类列表。
     4 
     5 var sdfsf123 = Sql.ExecuteList((a, b) =>
     6 
     7            Sub.Top(8).Select(a.UserId, a.UserName).From(a)
     8 
     9  );
    10 
    11 //分页查询,返回表
    12 
    13 DataTable dtUser = Sql.ExecuteDataTable((a, b) =>
    14 
    15             Sub.PageSize(12).PageIndex(2).Select(a.UserId.As("ID号"), a.UserName.As("名字")).From(a).OrderBy(a.CreateDate.Desc())
    16 
    17 );
    18 
    19 //多表查询
    20 
    21 var ListUser3 = Sql.ExecuteList((a, b) =>
    22 
    23             Sub.Top(12).Select().From(a).InnerJoin(b).On(a.UserId == b.CategoryId).Where(a.UserId == u1.UserId)
    24 
    25 );
    26 
    27 //子查询
    28 
    29 var ListUser8= Sql.ExecuteList((a, b) =>
    30 
    31            Sub.Top(12).Select().From(a).Where(a.UserId.In(
    32 
    33               Sub.Select(b.CategoryId).From(b).Where(b.CategoryName.Like("Anna"))))
    34 
    35 );
    36 
    37 //居然还可以 同时执行同个语句。
    38 
    39  var sdfsf1113 = Sql.ExecuteList((a, b) =>
    40 
    41                 Sub.Insert(a).Values("213", "111", 11, "2012-02-02").
    42 
    43                 Next().
    44 
    45                 Select("213", "111", 11, "2012-02-02").From(a).Where(a.UserId == 123)
    46 
    47 );
    48 
    49 //数据库需要的都有,还有union,还有事务。大大缩短了我的开发时间。下面是插入,更新,删除。查询速度非常快。目前只支持sql server,听说oracle也快支持了哦。
    50 
    51 //插入
    52 
    53 Sql.ExecuteNonQuery((a) =>
    54 
    55           Sub.Insert(a).Fields(a.UserName, a.RoleId, a.LoginPassword, a.CreateDate).Values("Jane", 11, "213", DateTime.Now)
    56 
    57 );
    58 
    59 //更新
    60 
    61  var sdfsf6 = Sql.ExecuteNonQuery((a) =>
    62 
    63        Sub.Update(a).Set(a.UserName == "1").From(a).Where(a.UserId == irod)
    64 
    65 );
    66 
    67 //删除
    68 
    69 var sdfsf2 = Sql.ExecuteNonQuery((a, b) =>
    70 
    71        Sub.Delete(a).From(a) .Where(a.UserId == 1)
    72 
    73 );

     

    免费使用的,分享给大家。下载地址在最下面。

    C#
     
     

     

    这是下载地址,免费的: http://download.csdn.net/detail/qq_25613869/8398249

  • Sky_Fly
    2015-11-17 08:48 Sky_Fly
    你这个对于新手来说有点难理解 lamda表达式不是新手看得懂的
    第1楼 回到顶楼
  • c#路路通
    2015-11-22 21:51 c#路路通
    你好,关于 lamda表达式的问题,

    你说的不无道理,我看了一下,那篇里面的 lamda表达式 是不太让新手容易接受。

    后来我改了一下,换了一种写法,你请过过目,看看怎么样:




    1,关于单表的操作,最简单方便的写法:

    Users u2 = new Users();

    u2.RoleId = 123;
    u2.UserId = 321;

    u2.Select(a => new { a.UserId, a.UserName }).Where(a => a.UserId == 1).Query(out listUser); --查询

    u2.Update().Set(a => Fn.New(a.UserName == "123")).Where(a => a.UserName.Like("1")).Query(); --更新

    u2.Delete().Where(a => u2.RoleId == 4).Query(); --删除
    u2.Top(a=>2).Select().Where(a => a.UserId == 235).Query(out listUser);



    2,多表的复杂操作,能够满足多表,复杂的各种写法:
    var sql = FactoryAnna.Create<Users, InformationCategories,Users>();

    sql.Body((a, b) =>
    Sub.Top(8).Select(a.UserId, a.RoleId, Fn.Count(a.UserName)).From(a).GroupBy(a.UserId, a.RoleId).Having(a.UserId == 1)
    ).Query(out listUser); --分组查询

    sql.Body((a, b) =>

    Sub.Top(8).Select(a.UserId, a.UserName).From(a).UnionAll().
    Select(123.As("UserId"), "3123".As("UserName")).From(Fn.Dual)

    ).Query(out listUser); --unionall查询
    sql.Body((a) =>
    Sub.Delete(a).From(a).Where(a.UserName.Like("Anna"))
    ).Query(); --删除操作

    sql.Body((a) =>
    Sub.Insert(a).Fields(a.UserName, a.RoleId, a.LoginPassword, a.CreateDate).Values("Jane", num, "213", DateTime.Now)
    ).Query(); --插入操作

    sql.Body((a) =>
    Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser)
    ).Query(); --更新操作




    sql.Body((a, b, c) =>
    Sub.PageSize(12).PageIndex(2).Select(a.UserId.As("ID号"), a.UserName.As("名字")).From(a).Where(
    Fn.Exists(
    Sub.PageSize(1).PageIndex(5).Select(c.UserId).From(c).OrderBy(c.UserId.Desc())
    )
    )
    ).Query(out listUser); --分页查询,带子分页查询操作,这样速度更快。

    sql.Body((a, b, c) =>
    Sub.Top(12).Select().From(a).InnerJoin(b).On(a.UserId == b.CategoryId).Where(a.UserId / 2 == u1.UserId
    && a.UserName.In(
    Sub.Top(1).Select(c.UserName).From(c)))
    .OrderBy(a.UserId, a.UserName.Desc())
    ).Query(out listUser); --内联查询操作,同时带In子查询操作,以及排序。

    sql.Body((a, b) =>
    Sub.Insert(a).Fields(a.UserName, a.LoginPassword, a.RoleId, a.CreateDate)
    .Top(1).Select(b.CategoryName, "123", 11, Fn.Getdate()).From(b).UnionAll()
    .Select("123".As("CategoryName"), "32", 11, Fn.Getdate("2012-01-01")).From(Fn.Dual)
    ).Query(); --查询的表结果插入另一张表的操作

    sql.Body((a, b, c) =>
    Sub.Top(12).Select(u1.UserId.As("u1us"), xxd.As("xd"),a.UserId, a.UserName, Fn.DateAdd(DatePart.d, 1, Fn.Cast(a.CreateDate, SqlType.Datetime)).As("Year"), a.UserName.As("Len"),
    Sub.Case(a.CreateDate).When(System.DateTime.Now).Then("123").End().As("TT"),
    a.RoleId.As("d1"), a.CreateDate.As("Gn")
    ).From(a).
    Where(a.UserId / 2 != u1.UserId && a.UserName.In(Sub.Top(1).Select(c.UserName).From(c).OrderBy(c.UserId.Desc())))
    .OrderBy(a.UserId, a.UserName.Desc())
    ).Query(out listUser); --带有case when,以及函数的复杂查询操作。




    现在的最新版本就是这样的,不知道有没有用。

    也支持,两个数据库,sqlserver ,oracle.都是经过优化的,效率很好的。

    这样,不知道是否容易让新手接受。

    ----------------
    第2楼 回到顶楼
登录后才能评论,请先登录注册