ORM开题篇-Gentle.NET之牛刀小试

王朝c#·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

一直在关注三个开源的ORM。一是NHibernate,一是Gentle.NET,还有一个是iBatis.net。NHibernate够强大,可惜使用起来实在是太过复杂,门槛比较高。Gentle.NET是基于.NET反射机制的持久层,使用起来相对简单,并且目前的版本(1.2.5)已经比较稳定。iBatis.net被戏称是一种半自动化的ORM,SQL语句直接在XML里头配置,而不是靠持久层生成。这种方式应该说是非常的灵活,并且使用者的控制力度比较大,毕竟,SQL语句是自己写的,不需要在担心ORM生成SQL语句的性能问题。然而,当我看到,的配置文件就傻眼了,要写好多的额外的XML,并且好像还没用代码生成器支持它,还不如用Data Access Block来的直接。

今天拿Gentle.NET开刀,用MyGeneration对Sql Server的Northwind数据库生成了一下代码,感觉还相当凑活!业务对象类生成的相当漂亮,当然这也有可能跟Northwind本身毕竟简单而且设计也毕竟规范有关。接下来担心的是对复杂查询的支持,以及在必要的情况下,是否可以直接执行SQL语句和存储过程。折腾一个晚上,挤出几行代码来,不知道有没有更加简单的?代码放出来:

GentleSqlFactory sqlFact = Broker.GetSqlFactory();

IDbCommand cmd = sqlFact.GetCommand();

cmd.CommandType = CommandType.StoredProcedure;

IDataParameter param = cmd.CreateParameter();

param.ParameterName = sqlFact.GetParameterPrefix() + "CustomerId" + sqlFact.GetParameterSuffix();

param.Value = "ALFKI";

cmd.Parameters.Add(param);

SqlStatement sqlStat = new SqlStatement(Gentle.Framework.StatementType.Unknown, cmd, "CustOrderHist");

SqlResult sqlRes = Broker.Execute(sqlStat);

dataGrid1.DataSource = ObjectView.GetDataView(sqlRes);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航