sql的逆襲!讓我們開始無視Linq的存在!強類型,無需實體類!(Moon.Orm的自動實體:GetAutoEntities)


1.Moon.Orm的自動實體查詢方案

using System;
using Moon.Orm;
using System.Windows.Forms;
using North;
using System.Diagnostics;
using System.Collections.Generic;
namespace Demo
{
	class Program
	{
		public static readonly Stopwatch sp=new Stopwatch();
		public static void Main(string[] args)
		{
			Moon.Orm.GlobalData.AUTO_COMPLIE_DIRECTORY_PATH=Application.StartupPath;
			string sql="select top {0} * from Orders Left join Order_Details on Order_Details.OrderID=Orders.OrderID";
			object ret=DBFactory.GetAutoEntities(sql,null,1);
			
			sp.Restart();
			dynamic ret2=DBFactory.GetAutoEntities(sql,null,200);
			sp.Stop();
			Console.WriteLine("dynamic實體:"+sp.Elapsed);
			
			
			sp.Restart();
			string sql2="select top 200 * from Orders Left join Order_Details on Order_Details.OrderID=Orders.OrderID";
			var list=moontemp.EntityGetByAdonet.GetList(sql2,DBFactory.DefaultDB);
			sp.Stop();
			Console.WriteLine("  純ado.net:"+sp.Elapsed);
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}

 2.運行結果

我們可以看出效率和純ADO.NET差不多.而便捷性大家想想就知道.而且是強類型的,所以無視<匿名類型無法返回MVC視圖的問題>

要求:.net 4.0以上.

我們可以這么使用了:decimal newMoney=ret2[2].SumMoney+100;

配置文件的設置:(注意不要注釋)

 注意最后的路徑有一個\

3.方法講解

object GetAutoEntities(string sqlTemplate,string className,params object[] values)

sqlTemplate:sql模板,同樣的邏輯可以用同一套模板,到時候可以提供查詢效率

className:這個是自己隨意取的名字,用於緩存,也可以為null,但效率就低些.如果你給它賦值了,當sql模板有變動時,請你自己清空編譯路徑中moon_temp....dll

params object[] values:用於替換模板中的參數的.注意模板的參數形式如  {0} {1} {2}

 

3.demo下載

 注意自己附加數據庫到你的數據庫中,項目中注意修改連接字符串.

項目及數據庫下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM