gpt4 book ai didi

mysql - 流畅的 Nhibernate 查询执行速度非常慢(数据库托管在本地主机上)

转载 作者:行者123 更新时间:2023-11-29 12:25:04 26 4
gpt4 key购买 nike

我有一个非常简单的实体:

public class Days
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}

map 类

public class DaysMap : ClassMap<Days> 
{
public DaysMap()
{
Table("Days");
Id(x => x.ID).GeneratedBy.Identity().Column("ID");
Map(x => x.Name).Column("Name");
}
}

这是测试,我想加载 ID = 1Day。我可以加载该项目,但所需时间 = 2,5s!这是存储在本地主机上的 MySQL 数据库。

    private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString("server=localhost;user id=someID;password=pass;database=someDB"))
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.BuildSessionFactory();
}

public ActionResult Index()
{
Stopwatch sw = new Stopwatch();
sw.Start();

using (var sessionFactory = CreateSessionFactory())
{
using (var session = sessionFactory.OpenSession())
{
using (session.BeginTransaction())
{
var asd = session.Query<Days>().Where(x => x.ID == 1).FirstOrDefault();
}
}
}

sw.Stop();

var timeElapsed = sw.Elapsed.TotalMilliseconds; // returns 2504.3316 !!

return View();
}

最佳答案

希望您不要每次都执行以下操作:

private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString("server=localhost;user id=someID;password=pass;database=someDB"))
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.BuildSessionFactory();
}

每个应用程序只能创建 SessionFactory 1 次。在确定查询需要多长时间时不能包含此时间。一般来说,我在应用程序启动时预先构建它,以避免初始查询永远花费,因为我还没有构建它。这是使用 NHibernate 时非常常见的做法。

关于mysql - 流畅的 Nhibernate 查询执行速度非常慢(数据库托管在本地主机上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com