.net操作数据库,史上最牛逼的方法,你见过这种方法吗

qq_25613869 2015-01-26 02:42:45

免费分享给大家。下载地址在最下面。


var Sql = factorySql.Create<Users, InformationCategories>();
//简单查询,返回实体类列表。
var sdfsf123 = Sql.ExecuteList<Users>((a, b) =>
Sub.Top(8).Select(a.UserId, a.UserName).From(a)
);
//分页查询,返回表
DataTable dtUser = Sql.ExecuteDataTable((a, b) =>
Sub.PageSize(12).PageIndex(2).Select(a.UserId.As("ID号"), a.UserName.As("名字")).From(a).OrderBy(a.CreateDate.Desc())
);
//多表查询
var ListUser3 = Sql.ExecuteList<Users>((a, b) =>
Sub.Top(12).Select().From(a).InnerJoin(b).On(a.UserId == b.CategoryId).Where(a.UserId == u1.UserId)
);
//子查询
var ListUser8= Sql.ExecuteList<Users>((a, b) =>
Sub.Top(12).Select().From(a).Where(a.UserId.In(
Sub.Select(b.CategoryId).From(b).Where(b.CategoryName.Like("Anna"))))
);
//居然还可以 同时执行同个语句。
var sdfsf1113 = Sql.ExecuteList<Users>((a, b) =>
Sub.Insert(a).Values("213", "111", 11, "2012-02-02").
Next().
Select("213", "111", 11, "2012-02-02").From(a).Where(a.UserId == 123)
);
//数据库需要的都有,还有union,还有事务。大大缩短了我的开发时间。下面是插入,更新,删除。查询速度非常快。目前只支持sql server,听说oracle也快支持了哦。
//插入
Sql.ExecuteNonQuery((a) =>
Sub.Insert(a).Fields(a.UserName, a.RoleId, a.LoginPassword, a.CreateDate).Values("Jane", 11, "213", DateTime.Now)
);
//更新
var sdfsf6 = Sql.ExecuteNonQuery((a) =>
Sub.Update(a).Set(a.UserName == "1").From(a).Where(a.UserId == irod)
);
//删除
var sdfsf2 = Sql.ExecuteNonQuery((a, b) =>
Sub.Delete(a).From(a) .Where(a.UserId == 1)
);


这是下载地址,免费的:
http://download.csdn.net/download/qq_25613869/8397495
...全文
1166 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
lc_ant 2015-02-06
  • 打赏
  • 举报
回复
mark 好高端的感觉
huwei001982 2015-02-06
  • 打赏
  • 举报
回复
引用 33 楼 qq_25613869 的回复:
[quote=引用 30 楼 huwei001982 的回复:] 这玩意儿能好过 entity framework?
这你开玩笑了吧, 那个操作能和这种直观的相比较吗。 而且,这个是存储过程的效率。 数据库对象和.net对象完全等效的。[/quote] 呵呵
本拉灯 2015-02-05
  • 打赏
  • 举报
回复
楼上你广告诉完了没?够了吧。再直去就恶心了。
qq_25613869 2015-02-05
  • 打赏
  • 举报
回复
引用 30 楼 huwei001982 的回复:
这玩意儿能好过 entity framework?
这你开玩笑了吧, 那个操作能和这种直观的相比较吗。 而且,这个是存储过程的效率。 数据库对象和.net对象完全等效的。
qq_25613869 2015-02-05
  • 打赏
  • 举报
回复
最近突然发现, 它用的不是一般的语句,查询。 而是 直接存储过程的,难怪效率这么好。
qq_25613869 2015-02-05
  • 打赏
  • 举报
回复
引用 29 楼 xtdhb 的回复:
谈不上ORM吧,看不到" O "的概念, 下载地址的文件有5M?为何这么大? 为何报毒呢
不可能报毒的,这个没问题的。我测试过。 里面有些数据库优化的东西。
huwei001982 2015-01-30
  • 打赏
  • 举报
回复
这玩意儿能好过 entity framework?
老张一笑 2015-01-30
  • 打赏
  • 举报
回复
谈不上ORM吧,看不到" O "的概念, 下载地址的文件有5M?为何这么大? 为何报毒呢
qq_25613869 2015-01-29
  • 打赏
  • 举报
回复
引用 27 楼 longlonglo 的回复:
学习,学习!
引用 20 楼 wyd1520 的回复:
[quote=引用 19 楼 qq_25613869 的回复:] [quote=引用 16 楼 wyd1520 的回复:] [quote=引用 15 楼 qq_25613869 的回复:] http://download.csdn.net/detail/qq_25613869/8398249 这个地址更全面。 完全支持参数化,不仅如此,还支持数据库系统函数,和Case,看参数化的例子: int iUser = 222; Sql.ExecuteNonQuery((a) => Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) );
老大人家说的参数化不是这个。明白? 你这个 Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) 在低层也是把他变为SQL句子的并接吧。[/quote] 不是得,自动识别参数化。[/quote] 开源,哪个国家人写的?[/quote] 必然是世界人民中的一员,这点毋庸置疑的。
IT修补匠 2015-01-28
  • 打赏
  • 举报
回复
学习,学习!
Delta 2015-01-27
  • 打赏
  • 举报
回复
都是大牛啊。来看看。。。
phommy 2015-01-27
  • 打赏
  • 举报
回复
1.函数式编程,我喜欢 2.效率会低,比如我没看到要求只取实体的某些属性值的指定,估计都是些select*吧 3.如果这套库能屏蔽数据库差异,比如根据数据库是mss/ora分别生成select into和create as,应该是有适合的使用场景的
qq_25613869 2015-01-27
  • 打赏
  • 举报
回复
引用 21 楼 bigbaldy 的回复:
我一直用PetaPoco,小巧轻便,性能高效
这个还是不在一个级别上。 SqLamdalf 已经是将数据库对象和.net对象完全结合,等效了。 相当于,编写.net代码就是编写数据代码,而且,还能弥补通用,高效,自动优化的问题。 phommy phommy 分析的很好,数据库差异应该是个重点
outcountry 2015-01-27
  • 打赏
  • 举报
回复
引用 22 楼 phommy 的回复:
1.函数式编程,我喜欢 2.效率会低,比如我没看到要求只取实体的某些属性值的指定,估计都是些select*吧 3.如果这套库能屏蔽数据库差异,比如根据数据库是mss/ora分别生成select into和create as,应该是有适合的使用场景的
1,这样直接,方便。 2,有的啊,除了默认的 select * 还有 var sdfsf123 = Sql.ExecuteList<Users>((a, b) => Sub.Top(8).Select(a.UserId, a.UserName).From(a)); 效率非常快,里面并非是简单的那种拼接,是有数据库优化方面的东西,在里面。你多执行几次,速度会非常快的。 3,是的,同样的代码,多个数据运行的,但是现在Oracle,和更多的数据库还没有推出。
bigbaldy 2015-01-26
  • 打赏
  • 举报
回复
我一直用PetaPoco,小巧轻便,性能高效
本拉灯 2015-01-26
  • 打赏
  • 举报
回复
引用 19 楼 qq_25613869 的回复:
[quote=引用 16 楼 wyd1520 的回复:] [quote=引用 15 楼 qq_25613869 的回复:] http://download.csdn.net/detail/qq_25613869/8398249 这个地址更全面。 完全支持参数化,不仅如此,还支持数据库系统函数,和Case,看参数化的例子: int iUser = 222; Sql.ExecuteNonQuery((a) => Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) );
老大人家说的参数化不是这个。明白? 你这个 Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) 在低层也是把他变为SQL句子的并接吧。[/quote] 不是得,自动识别参数化。[/quote] 开源,哪个国家人写的?
qq_25613869 2015-01-26
  • 打赏
  • 举报
回复
引用 16 楼 wyd1520 的回复:
[quote=引用 15 楼 qq_25613869 的回复:] http://download.csdn.net/detail/qq_25613869/8398249 这个地址更全面。 完全支持参数化,不仅如此,还支持数据库系统函数,和Case,看参数化的例子: int iUser = 222; Sql.ExecuteNonQuery((a) => Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) );
老大人家说的参数化不是这个。明白? 你这个 Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) 在低层也是把他变为SQL句子的并接吧。[/quote] 不是得,自动识别参数化。
qq_25613869 2015-01-26
  • 打赏
  • 举报
回复
SqLamdalf 不是拼接字符串的那种低的,要不然我就不推荐了。 支持参数化,更加优化,效率更高。 http://download.csdn.net/detail/qq_25613869/8398249 这个地址更全面。
引用 14 楼 starfd 的回复:
[quote=引用 13 楼 wyd1520 的回复:] [quote=引用 12 楼 starfd 的回复:] [quote=引用 11 楼 wyd1520 的回复:] [quote=引用 9 楼 starfd 的回复:] 最新版的OrmLite支持参数化了吗?这坑大的不参数化坚决不用它
参数化是啥意思,没懂。[/quote] 你跟踪下ormlite生成的sql,你会发现where查询条件时ormlite是拼接字符串的方式,而不是用的参数化查询的方式 比如 Field Like '%A%' 而不是 Filed Like @Field[/quote] 这样呀,那新版的还是没有改,还是并接的,改成参数化的对他们的框架改动太大了。[/quote] 所以我干脆就还是用dapper或者微软企业库(这都不能算orm)了[/quote]
本拉灯 2015-01-26
  • 打赏
  • 举报
回复
引用 14 楼 starfd 的回复:
[quote=引用 13 楼 wyd1520 的回复:] [quote=引用 12 楼 starfd 的回复:] [quote=引用 11 楼 wyd1520 的回复:] [quote=引用 9 楼 starfd 的回复:] 最新版的OrmLite支持参数化了吗?这坑大的不参数化坚决不用它
参数化是啥意思,没懂。[/quote] 你跟踪下ormlite生成的sql,你会发现where查询条件时ormlite是拼接字符串的方式,而不是用的参数化查询的方式 比如 Field Like '%A%' 而不是 Filed Like @Field[/quote] 这样呀,那新版的还是没有改,还是并接的,改成参数化的对他们的框架改动太大了。[/quote] 你说的 所以我干脆就还是用dapper或者微软企业库(这都不能算orm)了[/quote] 你说的DAPPer是这样子的使用? connection.Execute(@"insert MyTable(colA, colB) values (@a, @b)", new[]{new{ a=1, b=1},new{ a=2, b=2},new{ a=3, b=3}} ).IsEqualTo(3);// 3 rows inserted: "1,1", "2,2" and "3,3" var dog = connection.Query<Dog>("select Age = @Age, Id = @Id",new{Age=(int?)null,Id= guid }); 如果是这样子,ServiceStack.OrmLite 也有的呀 这种写法的,在底层他就是参数化的 db.Delete(new Person { Id = 1, FirstName = "Jimi", LastName = "Hendrix", Age = 27 }); Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"Id\"=@Id AND \"FirstName\"=@FirstName AND \"LastName\"=@LastName AND \"Age\"=@Age")); db.Exists<Person>("Age = @age", new { age = 42 }); Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age = @age")); db.Exists<Person>("SELECT * FROM Person WHERE Age = @age", new { age = 42 }); Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * FROM Person WHERE Age = @age")); 像这样子他底层就是转参数化了
本拉灯 2015-01-26
  • 打赏
  • 举报
回复
引用 15 楼 qq_25613869 的回复:
http://download.csdn.net/detail/qq_25613869/8398249 这个地址更全面。 完全支持参数化,不仅如此,还支持数据库系统函数,和Case,看参数化的例子: int iUser = 222; Sql.ExecuteNonQuery((a) => Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) );
老大人家说的参数化不是这个。明白? 你这个 Sub.Update(a).Set(a.UserName == "1231").From(a).Where(a.UserId == iUser) 在低层也是把他变为SQL句子的并接吧。
加载更多回复(14)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧