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); } } }
我们可以看出效率和纯ADO.NET差不多.而便捷性大家想想就知道.而且是强类型的,所以无视<匿名类型无法返回MVC视图的问题>
要求:.net 4.0以上.
我们可以这么使用了:decimal newMoney=ret2[2].SumMoney+100;
配置文件的设置:(注意不要注释)
注意最后的路径有一个\
object GetAutoEntities(string sqlTemplate,string className,params object[] values)
sqlTemplate:sql模板,同样的逻辑可以用同一套模板,到时候可以提供查询效率
className:这个是自己随意取的名字,用于缓存,也可以为null,但效率就低些.如果你给它赋值了,当sql模板有变动时,请你自己清空编译路径中moon_temp....dll
params object[] values:用于替换模板中的参数的.注意模板的参数形式如 {0} {1} {2}
注意自己附加数据库到你的数据库中,项目中注意修改连接字符串.