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

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

项目及数据库下载

posted @ 2013-06-10 12:15  [秦时明月]  阅读(1592)  评论(29编辑  收藏  举报