之前简单介绍了XLinq的一些功能,有很多功能都没有提到,现在给XLinq加了一些功能,这次把所有功能都介绍一遍。
设计目标
- 易用性
在使用一个框架的时候
应该没几个人会喜欢写一大堆的配置文件吧
也应该没几个人会喜欢为了完成一个小功能却需要写一大堆代码
这是XLinq开发的首要目标之一,就是尽可能提高易用性
最小配置的情况下仅需要一句连接字符串的配置就可以使用
默认支持的是Sql Server 2008 R2数据库,理论上说也大部分支持了sql server系的其他数据库
- 高性能
目前针对查询时的DataReader转List和批量插入有针对性优化,其他的不太重要的例如批量更新这个并没有太多优化
- 易于调试
出了问题能够以最快速度让使用者定位到问题,其实这些是细节问题
- 支持LINQ
这个其实是跟易用性挂勾的,园子里面有大神写的ORM,声称"无Linq",其实我也不太想用Linq,因为解析Linq实在太难,坑太多,但又找不到另一种比Linq更让我满意的方案。然后我去看了他的ORM的使用方法,发现一旦复杂起来不见得会比Linq更清晰,并且实体类的设计实在是···
Linq实现复杂的语法确实比较蛋疼,sql语句里面直接来几个case when,linq就得写晕过去,至少解析的时候会晕过去。
但在我看来,既然linq语句都比较复杂了,那肯定是有很多的逻辑在里面,就像上面说的case when,那么为什么不把这些逻辑分拆成好几个linq去执行呢?或者干脆点写存储过程里面。
- 多数据库支持
使用方法
- 建立控制台应用程序,暂时只支持.net 4.5.2版本
- 安装xlinq nuget包
- 建立数据库XLinq及相关表
- 添加配置文件
- <connectionStrings>
- <add name="test" connectionString="Data Source=(local);;initial catalog=XLinq;User Id=xinchen;Password=123456"/>
- </connectionStrings>
- 建立TestDataContext类和User实体类
- public class TestDataContext:DataContext
- {
- public TestDataContext():base("test")
- {
- }
- }
- public class User
- {
- public int Id { get; set; }
- public string Username { get; set; }
- }
- 开始使用
- TestDataContext db = new TestDataContext();
- db.Set<User>().ToList();
查询
- 单表查询
Lambda版:
- db.Set<User>().Where(x => x.Username == "xxxx").ToList();
LINQ版:
- (from user in db.Set<User>() where user.Username == "xxxx" select user).ToList();
LINQ版看起来明显感觉比较麻烦,所以在简单查询的时候我更倾向于Lambda表达式
上面的语句生成的代码是一致的
- .
- ,.
- 多表查询
建立实体类的过程不再说
两个表连接查询,因为用Lambda实现比较复杂,所以后面都不再用Lambda实现
- var query = from user in db.Set<User>()
- join userRole in db.Set<UserRole>() on user.Id equals userRole.UserId
- where user.Id == 1 && userRole.RoleId == 1
- select new
- {
- user.Id,
- userRole.RoleId,
- user.Username
- };
生成的语句
- [user].
- ,.[RoleId] [RoleId]
- ,[user].
- WHERE (([文章目录 - 静逸 阅读原文»
chrome
CSS3精典
CSS读书笔记系列
CSS3实践
HTML5精典
Html5读书笔记系列
HTML5系列四(特征检测、Modernizr.js的相关介绍)
HTML5系列三(多媒体播放、本地存储、本地数据库、离线应用)
JavaScript读书笔记
高性能JavaScript笔记二(算法和流程控制、快速响应用户界面、Ajax)
高性能JavaScript笔记一(加载和执行、数据访问、DOM编程)
JavaScript精典
LABjs(类似于LazyLoad,但它更加方便管理依赖关系)
JS性能方面--内存管理及ECMAScript5 Object的新属性方法
收集的一些jQuery (我平常用的少的,但确实挺有效果的)
JavaScript实践
Navigation&Resource
Other
没有评论:
发表评论