dataRabbit它的实体有生成器生成,所以不用费工作量,而操作更是方便,效率跟ODBC一样高效。只要几行代码,就能方便完成,这里是朱哥提供的一个例子:就算是Junior相信也看看就明白了
DataConfiguration dbAddress = new DataConfiguration(DataBaseType.SqlServer ,"127.0.0.1", "sa", "chenqidudu", "TestMap" ,null)
IADOBase adoBaseSqlServer = ADOBaseFactory.CreateADOBase(dbAddress);
IDynamicAccesser studentAccesser = adoBaseSqlServer.GetDynamicAccesser("Student");
Student stu = new Student();
stu.ID = 1000;
stu.Name = "Sky";
stu.Age = 27;
studentAccesser.Insert(stu);
这就是所有了,不需要任何配置文件,不需要任何其它附加的东西,上面的代码已经可以正常工作。是不是很简单了!
下面在举个对事务支持的例子,仍然是Student表:
IADOBase adoBaseSqlServer = ADOBaseFactory.CreateADOBase(dbAddress);
IDynamicAccesser studentAccesser = adoBaseSqlServer.GetDynamicAccesser("Student");
Student stu = new Student();
stu.ID = 1000;
stu.Name = "Sky";
stu.Age = 27;
Student stu2 = new Student();
stu.ID = 1001;
stu.Name = "Sky2";
stu.Age = 30;
IDbTransaction trans = null;
DataRabbit.Transction.ITransactionHelper transHelper = adoBaseSqlServer.GetTransactionHelper();
try
{
trans = transHelper.StartTransaction() ;
studentAccesser.Insert(stu ,trans);
studentAccesser.Update(stu2 ,trans);
transHelper.CommitTransaction(trans); //提交事务
}
catch
{
transHelper.RollTransaction(trans);//回滚事务
}
这种轻便的ORM是怎么实现的了?下面是它的原理(仍然以Student表为例):
(1)获取Student表的表结构,即数据大纲,在DataRabbit称为DataSchema。
(2)根据DataSchema动态构建各个System.Data.IDbDataParameter参数,然后使用这些IDbDataParameter组合动态构建IDbCommand命令,并依据Insert操作动态生成对应的CommandText。
(3)将Entity对象(即上例中的stu实例)的各个属性通过反射赋值给对应的IDbDataParameter.Value。
(4)执行IDbCommand。
DataRabbit的ORM也只是内置了对SqlServer和Oracle的支持,如果需要支持其它类型的数据库,则可以通过附加插件的方式做到。这就是朱哥框架最牛B的地方了
Linq执行一百万记录要7秒,DataRabbit只要零点几秒,Linq不是它的lamadia表达式和强大的对像查询功能,我都不会再用它了。好了,余下的时间,研究下朱哥的插件式编程和隔壁公司的小美女吧。
浙公网安备 33010602011771号