小编Daw*_*wmz的帖子

查询速度非常快,但映射速度慢,而且速度慢

我正在使用短小精悍的新项目并喜欢它,但我不明白为什么我的查询真的很慢.执行时间非常快,几乎是即时的,但连接保持打开的时间更长,而dapper将结果映射到我的对象我想.

这是一个瞥见的例子:

一瞥结果

这个查询只是一个类似15个字段的SELECT,主键上有一个where,所以执行速度非常快,并且它不会返回那么多数据.我执行它的代码是:

 using (var conn = GetConnection())
 {
    obj = conn.Get<T>(id);
 }
Run Code Online (Sandbox Code Playgroud)

对象是一个非常基本的poco与字符串和Ints.那么为什么我在执行此操作时浪费了220毫秒,而查询执行本身需要3毫秒?区别在哪里?

谢谢你的帮助 !

sql dapper

12
推荐指数
3
解决办法
4046
查看次数

NHibernate和上下文实体

我正在尝试将NHibernate用于带有旧数据库的新应用程序.它运行得很好,但我陷入困境,无法找到解决问题的好方法.

假设我有这个模型:

  • 服务表(Id,ServiceName ..)
  • 电影表(Id,Title,...)
  • 内容表,用于关联服务和电影(IdContent,Name,IdMovie,IdService)

所以我绘制了这个并且一切顺利.现在我可以检索一部电影,获取所有相关的内容,...我的应用程序是电影商店"发电机".每个"服务"实际上是一个不同的商店,当用户进入我的网站时,他被重定向到其中一个商店,显然,我必须向他展示他的商店可用的电影.这个想法是:用户来了,他的服务得到认可,我向他展示了与他的服务相关的内容.我需要能够为后台检索电影的所有内容.我正在尝试用NHibernate找到最透明的方法来实现这一点.我无法真正对db模型进行更改.

我想了几个解决方案:

  • 将服务条件添加到我的所有查询中.会工作,但它有点麻烦.该模型非常复杂,有大量的表/查询..

  • 使用nhibernate过滤器.看似理想并且工作得很好,我在所有映射中添加了serviceid上的过滤器,并在我的用户服务被识别后立即执行了EnableFilter但是... nhibernate过滤的集合不适用于第二个lvl缓存(在我的情况下是redis)和第二个lvl缓存使用是必需的.

  • 将计算属性添加到我的对象,如Movie.PublishedContents(Int32 serviceId).可能会工作但需要编写大量代码并"污染"我的域名.

  • 添加从我的nhibernate实体继承的新实体,如PublishedMovie:Movie,它只显示上下文数据

这些都不能让我满意.有没有办法做到这一点?

谢谢 !

nhibernate asp.net-mvc

5
推荐指数
1
解决办法
117
查看次数

标签 统计

asp.net-mvc ×1

dapper ×1

nhibernate ×1

sql ×1