從性能上講目前沒有性能與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