Asp.net mvc ASP.NET、Ninject和MVC:性能负载问题
问题描述:此模型一次只适用于一个用户。一旦我同时获得多个用户,我就会收到一系列与不关闭SqlDataReader相关的错误。当我像这样关闭延迟加载时: persistenceModel.Conventions.OneToManyConvention=(prop=>prop.SetAttribute(“lazy”、“false”) 它很好,但是性能很慢。这将使用MVC Beta 1 有什么想法吗 下面我有一段我的全局ASAX以及我的SessionFactory初始化代码 ***********这是我的GLOBAL.ASAX********Asp.net mvc ASP.NET、Ninject和MVC:性能负载问题,asp.net-mvc,nhibernate,fluent-nhibernate,ninject,Asp.net Mvc,Nhibernate,Fluent Nhibernate,Ninject,问题描述:此模型一次只适用于一个用户。一旦我同时获得多个用户,我就会收到一系列与不关闭SqlDataReader相关的错误。当我像这样关闭延迟加载时: persistenceModel.Conventions.OneToManyConvention=(prop=>prop.SetAttribute(“lazy”、“false”) 它很好,但是性能很慢。这将使用MVC Beta 1 有什么想法吗 下面我有一段我的全局ASAX以及我的SessionFactory初始化代码 ***********这是
public class MvcApplication : NinjectHttpApplication
{
public static IKernel Kernel { get; set; }
protected override void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//routes.IgnoreRoute("WebServices/*.asmx");
routes.MapRoute("CreateCategoryJson", "Admin/CreateCategoryJson/{categoryName}");
routes.MapRoute("User", "Admin/User/{username}", new { controller="Admin", action="user" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Session_Start(object sender, EventArgs e)
{
if (Session["rSkillsContext"] == null)
{
string logonName = this.User.Identity.Name.Replace("NUSOFTCORP\\", string.Empty);
rSkillsContext context = new rSkillsContext(logonName);
Session.Add("rSkillsContext", context);
}
}
protected override IKernel CreateKernel()
{
log4net.Config.XmlConfigurator.Configure();
Kernel = new StandardKernel(new RepositoryModule(), new AutoControllerModule(Assembly.GetExecutingAssembly()), new Log4netModule());
return Kernel;
}
}
*****这是我的NHibernateHelper.cs******
private ISessionFactory CreateSessionFactory()
{
var configuration = MsSqlConfiguration
.MsSql2005
.ConnectionString.FromConnectionStringWithKey("ConnectionString")
.ShowSql()
.Raw("current_session_context_class", "web")
.ConfigureProperties(new Configuration());
var persistenceModel = new PersistenceModel();
persistenceModel.Conventions.GetForeignKeyName = (prop => prop.Name + "ID");
persistenceModel.Conventions.GetForeignKeyNameOfParent = (prop => prop.Name + "ID");
// HACK: changed lazy loading
persistenceModel.Conventions.OneToManyConvention = (prop => prop.SetAttribute("lazy", "false"));
persistenceModel.addMappingsFromAssembly(Assembly.Load(Assembly.GetExecutingAssembly().FullName));
persistenceModel.Configure(configuration);
return configuration.BuildSessionFactory();
}
看起来您没有正确地处理会话(一个月前,我在Ninject和NHibernate上遇到了相同的错误)。它应该在请求开始时启动,并且应该在请求结束时处理。您能否提供启动和处理nhibernate会话的代码片段?看起来您没有正确地处理会话(一个月前我在Ninject和nhibernate上遇到了相同的错误)。它应该在请求开始时启动,并且应该在请求结束时处理。您能提供启动和处理nhibernate会话的代码吗