テストアプリを実装しました。これは、mssql db 内の db オブジェクトへの流暢な nhibernate マッピングを使用します。ファインチューンnhibを学びたいので。mvc3 アプリケーション、私はこのアプリを使用しています。10 個の列挙型プロパティと 1 個の文字列プロパティを持つ単純なエンティティを 1 つだけ持つテスト目的。つまり、実際にはライトウェーブですが、nhibernate プロファイラーによると起動時間は 4.37 秒です。これは、数行のチェック/チェックされていないプロパティを使用して 1 つのエンティティをレンダリングするのが非常に遅いです。
コードは次のとおりです。 Domain.SessionProvider.cs
public static ISessionFactory CreateSessionFactory()
{
var config = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("myConnection")))
.Mappings(m => m.FluentMappings.Add<FeaturesMap>())
.ExposeConfiguration(p => p.SetProperty("current_session_context_class", "web"))
.BuildConfiguration();
return config.BuildSessionFactory();
}
Global.asax
public class MvcApplication : System.Web.HttpApplication
{
//SessionPerWebRequest is ommited here as well as other content
public static ISessionFactory SessionFactory =
SessionProvider.CreateSessionFactory();
protected void Application_Start()
{
SessionFactory.OpenSession();
}
}
myController 内には次のものがあります。
public ActionResult Index()
{
return View(GetData());
}
private IList<FeaturesViewModel> GetData()
{
List<Features> data;
using (ISession session = MvcApplication.SessionFactory.GetCurrentSession())
{
using (ITransaction tx = session.BeginTransaction())
{
data = session.Query<Features>().Take(5).ToList();
tx.Commit();
var viewModelData = FeaturesViewModel.FromDomainModel(data);
return viewModelData;
}
}
}