是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