【问题标题】:GetTable in ApplicationDbContext : IdentityDbContext<ApplicationUser>ApplicationDbContext 中的 GetTable:IdentityDbContext<ApplicationUser>
【发布时间】:2016-02-26 00:09:30
【问题描述】:

我正在尝试将我的 LinQ 语句变成预编译语句。

我正在使用本指南:LinQ opti

我这样构建数据库连接:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }
    public DbSet<UserType> UserType { get; set; }
}

这个静态类看起来像这样:

public static class clsCompiledQuery
{
    //UserType
    public static Func<ApplicationDbContext, string, IQueryable<UserType>>
        getUserTypeByCode = CompiledQuery.Compile((ApplicationDbContext db, string UserTypeCode)
            => from tbUserType in db.GetTable<UserType>()
              where tbUserType.UserTypeCode == "PAR"
                select tbUserType);

}

db.GetTable() 在 ApplicationDbContext 中不可用

有没有办法从 ApplicationDbContext 创建 GetTable?

这对我来说是新的领域,我在这方面有点迷失了。 这个任务/主题的原因是 LinQ 很慢,我需要找到更好的性能。

【问题讨论】:

  • 您使用的是哪个版本的 EF 和 .net 框架?
  • EF 6.1.3, ASP.NET Identity 2.2.1 Witch包你是指.net框架吗?
  • .net 框架是您运行代码的“引擎”。我猜您使用的是 4.5 或 4.6;反正没关系——看看我的回答

标签: c# entity-framework linq


【解决方案1】:

由于您使用的是EF6查询会自动编译而不管代码运行的.net framework

您在问题中提供的链接可追溯到 2009 年,当时预编译查询是有意义的。

提供一点历史

  • EF6 是第一个独立于 .net 框架的版本

  • 如果在框架 4.5+ 中运行,EF4 和 EF5 可以利用预编译功能

【讨论】:

  • 谢谢.. 那我需要寻找其他方法来优化数据访问.. 对 EF6 有什么建议吗?
  • 这是个大问题。我想说看看实体跟踪行为 - 如果你得到它们而不是更新它们,你可以关闭它们。也有更小的上下文
  • 我正在研究非规范化数据库的一些半静态部分。它应该给我更多的性能,但也更复杂。然后我在 MVC 设置中输出缓存静态和半静态控制器。 Javascript 的捆绑和缩小使我的加载时间加快了 50%。问题仍然是加载时间,输出缓存是我的朋友。
猜你喜欢
  • 2016-07-15
  • 2019-12-23
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多