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下載
注意自己附加數據庫到你的數據庫中,項目中注意修改連接字符串.