一下是測試代碼.代碼采用fish給的.資料庫也是他給的./Files/humble/TestFish.7z
//
using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using ClownFish;
using Dapper;
using Moon.Orm;
namespace TestFish
{
public class OrderInfo
{
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public decimal SumMoney { get; set; }
public string Comment { get; set; }
public bool Finished { get; set; }
public int ProductID { get; set; }
public decimal UnitPrice { get; set; }
public int Quantity { get; set; }
public string ProductName { get; set; }
public int CategoryID { get; set; }
public string Unit { get; set; }
public string Remark { get; set; }
// 注意:客戶資訊有可能會是DBNull
public int? CustomerID { get; set; }
public string CustomerName { get; set; }
public string ContactName { get; set; }
public string Address { get; set; }
public string PostalCode { get; set; }
public string Tel { get; set; }
}
class Program
{
static void AppInit()
{
ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[ " MyNorthwind "];
ConnectionString = setting.ConnectionString;
// 配置 ClownFish
ClownFish.DbContext.RegisterDbConnectionInfo( " default ", setting.ProviderName, " @ ", setting.ConnectionString);
Type[] types = ClownFish.BuildManager.FindModelTypesFromCurrentApplication(x => x.Namespace == " PerformanceTestApp.Model ");
ClownFish.BuildManager.CompileModelTypesSync(types, true);
// 配置 FishWebLib
FishWebLib.FishDbContext.Init(setting.ProviderName, " @ ", setting.ConnectionString);
}
protected static string ConnectionString;
private static ClownFish.DbContext db;
public static readonly string QueryText2 = @"
select top (1000) d.OrderID, d.OrderDate, d.SumMoney, d.Comment, d.Finished,
dt.ProductID, dt.UnitPrice, dt.Quantity,
p.ProductName, p.CategoryID, p.Unit, p.Remark,
c.CustomerID, c.CustomerName, c.ContactName, c.Address, c.PostalCode, c.Tel
from Orders d
inner join [Order Details] dt on d.OrderId = dt.OrderId
inner join Products p on dt.ProductId = p.ProductId
left join Customers c on d.CustomerId = c.CustomerId
";
public static SqlConnection GetSqlConnection()
{
var connection = new SqlConnection(ConfigurationManager.AppSettings[ " linkString "]);
connection.Open();
return connection;
}
public static void Main( string[] args)
{
// -------------這些可以不理會
var t1=DateTime.Now.Ticks;
AppInit();
db = new ClownFish.DbContext( false);
var parameter = new { TopN = 1000 };
var list= ClownFish.DbHelper.FillList<OrderInfo>(
QueryText2, null, db, ClownFish.CommandKind.SqlTextWithParams);
var t2=DateTime.Now.Ticks;
Console.WriteLine(t2-t1);
var t3=DateTime.Now.Ticks;
var list2=DBFactory.GetEntities<OrderInfo>(QueryText2);
var t4=DateTime.Now.Ticks;
Console.WriteLine(t4-t3);
SqlConnection connection = Program.GetSqlConnection();
// --------------------------------------------------------------------------------------
var dd = connection.Query<OrderInfo>(QueryText2, null).ToList<OrderInfo>();
// --------------------前面的可以不算,咱們正式開始
var tFish1=DateTime.Now.Ticks;
for ( int i = 0; i < 1000; i++) {
var listFish= ClownFish.DbHelper.FillList<OrderInfo>(
QueryText2, null, db, ClownFish.CommandKind.SqlTextWithParams);
}
var tFish2=DateTime.Now.Ticks;
Console.WriteLine( " 小魚的時間: "+(tFish2-tFish1));
// ------------------
var tMoon1=DateTime.Now.Ticks;
for ( int i = 0; i < 1000; i++) {
var listMoon=DBFactory.GetEntities<OrderInfo>(QueryText2);
}
var tMoon2=DateTime.Now.Ticks;
Console.WriteLine( " MOON的時間: "+(tMoon2-tMoon1));
var tRapper1=DateTime.Now.Ticks;
for ( int i = 0; i < 1000; i++) {
var listRapper = connection.Query<OrderInfo>(QueryText2, null).ToList<OrderInfo>();
}
var tRapper2=DateTime.Now.Ticks;
Console.WriteLine( " datarapper的時間: "+(tRapper2-tRapper1));
Console.Write( " Press any key to continue . . . ");
Console.ReadKey( true);
}
}
}
測試結果圖:

//
關于MOON.ORM
轉載于:https://www.cnblogs.com/humble/archive/2012/08/20/2647286.html