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

标签 mysql fluent-nhibernate

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

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/

相关文章:

php - 我可以在 PHP 中混合使用 MySQL API 吗?

c# - 在 Fluent NHibernate 中创建数据库期间列名发生变化

c# - 在 Fluent NHibernate 中创建复合索引?

nhibernate - 用于 NHibernate 的 FLuentNhibernate + Nhibernate + Linq 的最新二进制版本

javascript - "+"js中的字符回显来自html页面的编辑数据被替换为数据库中的空白

mysql - 我应该为我的 CentOS 服务器安装哪个 mysql 版本?

mysql - 标准化 : is it worth it for small words (more queries needed)?

mysql - 在 Rails 中,是否有其他解决方案可以将列添加到数据库中的大表中?

sql-server-2008 - SQL Server 2008 DATE 列值的流畅 NHibernate 问题

c# - 如何构建可扩展的数据模型