是NHibernate的新功能。當執行下面的測試用了11.2秒(調試模式) 我看到在我所有的測試這個大的啓動時間(基本上創造了第一屆會議花費大量的時間)NHibernate + Fluent長啓動時間
設置=的Windows 2003 SP2/Oracle10gR2 最新CPU/ODP.net 2.111.7.20/FNH 1.0.0.636/NHibernate的2.1.2.4000/NUnit的2.5.2.9222/VS2008 SP1
using System;
using System.Collections;
using System.Data;
using System.Globalization;
using System.IO;
using System.Text;
using System.Data;
using NUnit.Framework;
using System.Collections.Generic;
using System.Data.Common;
using NHibernate;
using log4net.Config;
using System.Configuration;
using FluentNHibernate;
[Test()]
public void GetEmailById()
{
Email result;
using (EmailRepository repository = new EmailRepository())
{
results = repository.GetById(1111);
}
Assert.IsTrue(results != null);
}
//In my Repository
public T GetById(object id)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
try
{
T returnVal = session.Get<T>(id);
transaction.Commit();
return returnVal;
}
catch (HibernateException ex)
{
// Logging here
transaction.Rollback();
return null;
}
}
}
查詢時間是非常小的。由此產生的實體非常小。後續查詢沒問題。
它似乎正在開始第一次會議。
有沒有其他人看過類似的東西?
EDIT1:
public RepositoryBase()
{
config = Fluently.Configure()
.Database(OracleClientConfiguration.Oracle10
.ConnectionString(c => c.FromConnectionStringWithKey("DBCONSTRING"))
.Driver<NHibernate.Driver.OracleDataClientDriver>().ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MYASSEM>())
.BuildConfiguration();
sessionFactory = config.BuildSessionFactory();
}
你應該得到類似dottrace的東西,看看時間在哪裏燃燒。可能是你第一次連接到數據庫的東西..? – flq 2010-04-14 15:04:12
可以請你展示SessionFactory初始化的代碼以及從這段代碼中調用的地方嗎? – 2010-04-14 15:52:52
你有多少個映射類? – 2010-04-14 16:24:38