帮忙推荐一个.NET ORM框架,相对轻量级免配置的那种最好了

demoooo 2010-10-25 03:58:26

首先,不知道现在ORM框架是不是潮流?

还有ORM框架确实很方便,但发现也有其不足之处,比如多表联合查询,对视图和存储过程的处理不理想。

整体性能低于面向SQL语句

但还是对这个有浓厚的兴趣。希望可以优化和改善。 满足中型WEB应用即可,增删改查4个功能。。。

看了一个DBScript 地址:http://www.madcn.net/?p=544 大家说说这个怎样?还有更好的推荐吗,主要要简易,高效吧。

谢谢
...全文
2696 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
towner1 2011-12-30
  • 打赏
  • 举报
回复
Entity Framework 已经支持oracle,oracle官方已经给出了插件
yuanxing19870710 2011-11-10
  • 打赏
  • 举报
回复
我还是比较喜欢MS的Entity Framework 4,除了复杂的查询需要自己写Linq外,一些简单的增删改查操作用起来非常方便,这样我可以把更多精力放在逻辑层以及UI上!
bluedoctor 2011-09-15
  • 打赏
  • 举报
回复
demoooo 2010-10-29
  • 打赏
  • 举报
回复
说一下,就结贴
demoooo 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mapserver 的回复:]
Nhibernate+Castle ActiveRecord
ActiveRecord可以不用配置mapping xml
[/Quote]

老大,你认为配置与不配置mapping xml有什么区别呢?

sjt000 2010-10-26
  • 打赏
  • 举报
回复
linq,entity framework
demoooo 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yeness 的回复:]
那不错。

能说下,你对熟悉几个ORM框架的性能和大致功能吗?
---------------
1、XPO (Dev公司) 收费项目,使用较简单,语法支持hql/sql,事物
2、openAccess (telerik公司) 收费项目,全部自动化生成,语法支持hql/sql,事物
3、Ibitis.net 免费,(代码生成器需要收费),基本自动化生成,语法在xml

以上orm通常……
[/Quote]

谢谢.其实我更关心的是性能.

内部机制吧, 为何他们要把数据库表映射的字段属性保存xml文件呢? 为了避免从数据库实体类上面发射?
通常来说最直接的也是最快的. ORM要工厂分布,然后发射实体属性,然后拼接sql语句,最后是ado操作

还有对于多表联合查询,视图这2个数据对象,我还无法转换为操作对象,难道要为每个视图都建立一个实体对象吗
mapserver 2010-10-26
  • 打赏
  • 举报
回复
Nhibernate+Castle ActiveRecord
ActiveRecord可以不用配置mapping xml
「已注销」 2010-10-26
  • 打赏
  • 举报
回复
一个都没用过 听都没听过 我太水了
xuan.ye 2010-10-26
  • 打赏
  • 举报
回复
那不错。

能说下,你对熟悉几个ORM框架的性能和大致功能吗?
---------------
1、XPO (Dev公司) 收费项目,使用较简单,语法支持hql/sql,事物
2、openAccess (telerik公司) 收费项目,全部自动化生成,语法支持hql/sql,事物
3、Ibitis.net 免费,(代码生成器需要收费),基本自动化生成,语法在xml

以上orm通常支持一个为statement的类型,相当于自己去写sql或存储过程。

不过最为强大的框架是 .net castle 此乃神器,轻易不碰他。
phil999 2010-10-26
  • 打赏
  • 举报
回复
nhibernate 支持很多数据库,功能强大,但是配置繁杂,性能没有 entity framework 好,entity framework 似乎目前只支持MS自家的sql server,缺少其他provider
demoooo 2010-10-26
  • 打赏
  • 举报
回复
nbearv3 和最新的nbearLite 哪个好 ,后者是新版,把实体数据映射分离了.
aaa740713995 2010-10-26
  • 打赏
  • 举报
回复
都只听过 没用过的 看都看不懂
demoooo 2010-10-26
  • 打赏
  • 举报
回复
我去研究下 nbear 谢谢兄弟 :)
demoooo 2010-10-26
  • 打赏
  • 举报
回复
2、保存xml处理
通常数据库的数据类型和代码的数据类型不同 string-varchar/nvarchar 为了增强orm的能力通常需要xml进行映射处理.

==========
如果保持xml仅仅是为了定义数据类型,以及数据类型的尺寸。那么实体属性有个特性也可以做到呀。

发射出来所有实体属性,和属性的特性(可以包括实际映射的字段,字段类型,字节大小),然后缓存起来。 这岂不是比xml来的方便和快速? 可能nhibernate生成字段映射xml文件还有别的特别用途。。。

我现在修改了dbscript,使其可以直接支持视图,视图模型, 我也就是在主表实体中添加下关系表字表的映射字段, 然后就可以 Model GetList<Model> 了。

跟踪和测试了很久,我发现影响性能的最大之处在于Model的循环映射和赋值。
demoooo 2010-10-26
  • 打赏
  • 举报
回复
测试完毕

10万记录分页 15-31ms

30万记录分页 31-35ms

插入1000条记录 用时900-1000ms

开启事务下

插入1000条记录 用时305-330ms

插入1万记录 2.8-3.1秒

插入5万记录 15秒

.....

不知道这个性能算如何 2003+vs2008+sql2005 T2600(2.16G双核)+2G内存 笔记本

xuan.ye 2010-10-26
  • 打赏
  • 举报
回复
谢谢.其实我更关心的是性能.

内部机制吧, 为何他们要把数据库表映射的字段属性保存xml文件呢? 为了避免从数据库实体类上面发射?
通常来说最直接的也是最快的. ORM要工厂分布,然后发射实体属性,然后拼接sql语句,最后是ado操作

还有对于多表联合查询,视图这2个数据对象,我还无法转换为操作对象,难道要为每个视图都建立一个实体对象吗
-------------------
1、数据处理能力
正常的增删改查,性能基本一样,关键是你的数据库处理工厂要采用单例模式封装,如果存在多个连接,采用静态字典,注意声明构造函数为private,其他的看看单例模式。

批量处理,强调事物处理,你是一次事物处理几w条数据,还是每千条使用事物处理?

2、保存xml处理
通常数据库的数据类型和代码的数据类型不同 string-varchar/nvarchar 为了增强orm的能力通常需要xml进行映射处理.

3、还有对于多表联合查询,视图这2个数据对象,我还无法转换为操作对象,难道要为每个视图都建立一个实体对象吗
----------------------------
多表可以返回一个IList 对象,注意不是IList<object>,至于用不用实体,答案是可以不用。


忘记了国产的一款orm产品(免费)nbear,满不错的。

但是如果是商业开发,我还是建议nhibernate和linq,免费,这个资料多,文档全。而且会持续升级。

如果想弄明白orm(我没全弄明白,只能在实际开发使用,没有深入研究) 看看.net castle的作者的一本书 c# bussiness object 的一本书。
这本书最好别轻易看,有点太深了,该作者有点NB
demoooo 2010-10-25
  • 打赏
  • 举报
回复
终于把DBScript 的源码全部读了一遍. 麻雀虽小还真是强大啊

继承,多态,接口,工厂,发射,反射,分布式等等...全用上去了.

多态多的看不清,接口接的找不到线....
demoooo 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yeness 的回复:]
还有nhibernate能支持视图和储存过程吗。 是不是视图也要反射一个对象来呢
---------------
支持的,返回的是一个IList (这样可以不反回一个类对象),如果要一个类的对象就比较麻烦了。

1、如果要返回一个dataTable就需要使用IDBConnection,不确定数据库是mssql或者其他
2、如果项目指定是mssql/oracle数据库也可以使用sqlcon……
[/Quote]

那不错。

能说下,你对熟悉几个ORM框架的性能和大致功能吗?
xuan.ye 2010-10-25
  • 打赏
  • 举报
回复
还有nhibernate能支持视图和储存过程吗。 是不是视图也要反射一个对象来呢
---------------
支持的,返回的是一个IList (这样可以不反回一个类对象),如果要一个类的对象就比较麻烦了。

1、如果要返回一个dataTable就需要使用IDBConnection,不确定数据库是mssql或者其他
2、如果项目指定是mssql/oracle数据库也可以使用sqlconnection/oledbConnection

session的connection是可以转换成相应的数据库connection。

之所以这样做,就是因为有些项目比较着急。

nhibernate最强大在于事物的处理能力,而且编码较少,如果数据库存在改动,只需要改动xml文件和实体类。

加载更多回复(6)

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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