Moon.ORM- 4.4 隆重发布,在性能和使用便捷上一挑群雄(mysoft,cyq,pdf)
从性能上讲目前没有性能与moon可比的框架(非纯ADO.NET),便捷上除了实体框架,大家自己使用各框架便可知道.不过我挺喜欢PDF的思路,可以几乎不用反射实现,所以性能很高.在此表示无意战争,只是告诉我的那帮Moon.Orm支持者及还不理解ORM的朋友一点性能上看见.
第一部分论性能
4.4对自动编译方法进行了重构.
例如:
List<North.Orders> list=DBFactory.GetEntitiesH<North.Orders>(OrdersTable.OrderID.BiggerThan(0),"实体所在的程序集");
看代码.
/* * * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 */ using System; using CYQ.Data; using CYQ.Data.Table; using CYQ.Entity; using CYQ.Entity.MyNorthWind; using MDB; using Moon.Orm; using MySoft.Data; using North; using PWMIS.DataMap.Entity; namespace Demo { class Program { public static void Main(string[] args) { //---------可能有预处理,这些不管---------------- PDF.NorthWind.Customers pdft = new PDF.NorthWind.Customers(); OQL qt= new OQL(pdft); qt.Select().Where(qt.Condition.AND(pdft.CustomerID,">",1)); var resultt = EntityQuery<PDF.NorthWind.Customers >.QueryList(qt); // PWMIS.DataProvider.Data.AdoHelper db = PWMIS.DataProvider.Adapter.MyDB.GetDBHelperByConnectionName("pdf"); using(MAction actiont = new MAction(TableNames.Customers)) { if (actiont.Fill("CustomerID>1"))//查询ID>888的结果中取ID最大的的单行数据 { var listt=actiont.Select().ToList<North.Customers>(); } } DbSession dbSession = new DbSession(new MySoft.Data.SqlServer9.SqlServer9Provider(System.Configuration.ConfigurationSettings.AppSettings["linkString"])); //dbSession.CacheOff(); //第一次动态编译 var test=DBFactory.GetEntitiesH<North.Customers>(CustomersTable.CustomerID.BiggerThan(0),"demo.exe"); var listMysoft=dbSession.From<MySoft.Customers>().Where(MySoft.Customers._.CustomerID>0).ToList<MySoft.Customers>(); //====================================== long t1=DateTime.Now.Ticks; for (int i = 0; i < 800; i++) { PDF.NorthWind.Customers pdf = new PDF.NorthWind.Customers(); OQL q = new OQL(pdf); q.Select().Where(q.Condition.AND(pdf.CustomerID,">",1)); var result = EntityQuery<PDF.NorthWind.Customers >.QueryList(q); } long t2=DateTime.Now.Ticks; Console.WriteLine("PDF.NET: "+(t2-t1)); long a1=DateTime.Now.Ticks; for (int i = 0; i < 800; i++) {//注意我们还多获取了一个实体数据从>0 var test2=DBFactory.GetEntitiesH<North.Customers>(CustomersTable.CustomerID.BiggerThan(0),"demo.exe"); } var a2=DateTime.Now.Ticks; Console.WriteLine("Moon.Orm:"+(a2-a1)); long c1=DateTime.Now.Ticks; for (int i = 0; i < 800; i++) { using(MAction action = new MAction(TableNames.Customers)) { if (action.Fill("CustomerID>1"))//查询ID>888的结果中取ID最大的的单行数据 { var list=action.Select().ToList<North.Customers>(); } } } var c2=DateTime.Now.Ticks; Console.WriteLine("CYQ.DATA:"+(c2-c1)); var m1=DateTime.Now.Ticks; for (int i = 0; i < 800; i++) { var list2=dbSession.From<MySoft.Customers>().Where(MySoft.Customers._.CustomerID>0).ToList<MySoft.Customers>(); } var m2=DateTime.Now.Ticks; Console.WriteLine("MySoft: "+(m2-m1)); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
运行结果:
第二部分 开发使用便捷性
第一步:打开企业版代码生成器
第二步:填写项目数据库
第三步:生成实体集或者实体类文件
第四步:引入实体集或实体类文件到您开发的项目中.
第五步:复制链接字符串
第六步:粘贴到你项目的配置文件appsettings中
似乎有的框架不支持可空类型,这个有点不舒服.
测试代码:
QQ群技术交流:
216965349
少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一把吧
我的最近更新