标签:
忙活了一个多月,XLinq总算"能用"了,BUG总算"少点"了,准备真正替代EF了,现在已经初步在自己的项目中使用了
EF这家伙,优点不少,缺点也不少,我就扯几个最让我头大的缺点(或许这里面的缺点是因为我不会用)
吐嘈EF的人也不少了,我再这么就吐嘈两下完事的话有点没事找事···
所以,针对上面这些坑,我找了很多的ORM(其实好像也不多),试过alinq、dbentry.net,alinq不说,收费的,用不起···后面这个的话,当时被坑多了,就没用过了,对了,还有SOD,大神深蓝医生写的···
然而我自己也曾写过支持LINQ的ORM,但那代码渣的够可以,不过总算写过,知道些原理,其实更多的是为了锻炼,毕竟要支持LINQ的话,难度是比较大的,所以这一次又再一次自己写,功能从简单起见,主要有以下功能
LINQ一旦写复杂了,确实要生成高性能的SQL非常难,因为就算生成能执行的sql都比较难。我更倾向于将业务拆分,变成简单的LINQ语句能完成的功能。嵌套查询或许以后会支持,但到时候估计就是一堆坑
不需要事先在DbContext里面把实体写好,事实上什么都不写都行,主要是为了便于封装数据层,否则的话我每添加一张表都不得不去DbContext里面加一个实体
上面这个写法在EF中是绝对不支持的,另外还支持Date属性访问
目前只支持了sqlite和sql server 2008 r2,应该说只要sql server 2008 r2支持了,那就可以部分支持其他sql server数据库了
可以自定义生成自己想的sql
说这个我又要说java了,连hello world都没跑起来却搞了三天的配置,多麻烦!
降低学习成本
调用的方式和EntityFramework Exnteded类似,这也算是EF的又一个硬伤
这里只说最小化配置
我随便建的xlinq数据库,建了一个Users表,有两个字段,Id和Username,其中Id为自增并且是主键
终于到这儿了
怎么的,这跟EF的写法不是一模一样的?
运行结果:
为什么要把插入放前面?因为插入了之后才有数据查询
运行结果:
更新有两种方法,先查询再更新和直接更新
第一种:
运行结果:
第二种:
运行结果:
删除也有查询后删除和直接删除两种,这里只说直接删除
看着挺简单的基本功能,但做起来真是一把辛酸泪。计划中还有性能测试的,不过先看有多少人关注吧!
测试源码:http://files.cnblogs.com/files/wzxinchen/XlinqDemo.zip
标签:
原文地址:http://www.cnblogs.com/wzxinchen/p/4605940.html