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下载

 注意自己附加数据库到你的数据库中,项目中注意修改连接字符串.

项目及数据库下载

你可能感兴趣的:(LINQ)