.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
...全文
1116 36 打赏 收藏 转发到动态 举报
写回复
用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)
前面做项目,有数据库操作太慢。 而且,有一些新的程序员,他们对数据库操作的经验比较欠缺, 而且,.net需要学的东西就非常多,涵盖很多,还要程序员精通数据库,就更加麻烦,没有好多年的经验, 操作数据库的,一检查就有很多问题。所以,根据需要,我就找到了这个 简单的,高效,快速,方便的 .net数据库操作方案。非常直观。不需要懂数据库都能开发了。 找了好久,总算找到了,分享给大家。 ---------------------------- ------------------------------ SqLamdalf1.0 ----------================-----------================--------- .net数据库最佳操作类。 无缝衔接sql server和.net。 不需要为操作数据库再话费大量的开发时间,节约开发成本,以及更高效,更快速,更方便。 以后将陆续支持更多的数据库。 ----------================-----------================--------- SqLamdalf1.0免费版,欢迎使用。 使用方法: 双击setup.exe 安装以后。 桌面会出现 SqLamdalf 然后直接添加到需要的程序引用中,就可以使用了。 ============================================================== 调用方法: using SqlLamdalf; //工厂方法建立连接字符串 SqlLamdalf.FactoryAnna factorySql = new SqlLamdalf.FactoryAnna(AnnaType.SqlServer, "Persist Security Info=False;Integrated Security=SSPI;Database=数据库名称;Server=sql服务器名称"); //对需要的表的对象建立对象Sql。下面例子中为两个表,目前已经支持9个表: var Sql = factorySql.Create(); //目前支持返回 1实体类Sql.ExecuteEntity,2实体类列表,3表格,4字符串,5int var sdfsf123 = Sql.ExecuteList((a, b) => Sub.Top(8).Select(a.UserId, a.UserName).From(a) ); //目前支持返回 1实体类Sql.ExecuteEntity,2实体类列表,3表格,4字符串,5int var sdfsf123 = Sql.ExecuteList((a, b) => Sub.Top(8).Select(a.UserId, a.UserName).From(a) ); //分页查询如下,注意OrderBy免费版请取消 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()) ); //如需执行多条语句,请在语句后面加上Next() var sdfsf1113 = Sql.ExecuteList((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 == 123123) ); //下面是联结方式的多表查询,支持各种联结查询,&&意味and,LikeLeft意为Like '%name',LikeRight var sdfsf21 = Sql.ExecuteNonQuery((a, b) => Sub.Update(a).Set(a.RoleId == u1.RoleId, a.LoginPassword == irod.ToString(), a.UserName == "2").From(a). InnerJoin(b).On(a.UserId == b.CategoryId) .Where(a.UserId == 1 && (a.UserName + "123").LikeLeft(u1.UserName)) );
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android高级编程》的源代码 对应的书籍资料: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社:清华大学出版社 ISBN:9787302228448 上架时间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介   android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并通过简明扼要的示例引导您使用高级功能。    《android高级编程》首先简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还能灵活快捷地运用未来的增强功能构建最前沿的解决方案。    主要内容    ◆android移动开发的最佳实践    ◆简要介绍活动、intent、清单和资源    ◆如何使用布局和定制view创建用户界面    ◆存储和共享应用程序数据的技术    ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务    ◆如何创建和使用后台服务及notification    ◆使用加速计、指南针和摄像头硬件    ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等    ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术    读者对象    本书面向希望在android手机平台上创建应用程序的所有人员。不管是经验丰富的移动开发人员,还是初出茅庐的新手,都能从本书提供的宝贵信息中获益。 作译者   Reto Meier出生于澳大利西南的珀斯市,现居伦敦。 Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI程序架构、设计和开发经验。他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作。 Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。他利用业余时间研究包括WPF在内的多种开发平台以及Google的各种开发工具。 详情请访问Reto的个人网站RadioactiveYak,网址是http://blog.radioactiveyak.com。 目录 封面 -14 封底 -13 扉页 -12 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Android简介 1 1.1 一些背景信息 2 1.1.1 不远的过去 2 1.1.2 未来的前景 2 1.2 对Android的误解 3 1.3 开放的移动开发平台 3 1.4 自带的Android应用程序 4 1.5 Android SDK功能 5 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 5 1.5.2 自带的Google地图、地理编码和基于位置的服务 6 1.5.3 后台服务 6 1.5.4 SQLite 数据存储和检索数据库 6 1.5.5 共享数据和应用程序间通信 7 1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 开发框架简介 11 1.9.1 开发包中的资源 11 1.9.2 理解Android软件栈 12 1.9.3 Dalvik虚拟机 13 1.9.4 Android应用程序架构 14 1.9.5 Android库 14 1.9.6 高级Android库 15 1.10 小结 16 第2章 开始入手 17 2.1 Android开发 18 2.1.1

110,580

社区成员

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

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

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