相关疑难解决方法(0)

实体框架太慢了.我有什么选择?

我遵循了"不要过早优化"的口头禅并使用Entity Framework编写了我的WCF服务.

但是,我描述了性能和实体框架太慢了.(我的应用程序在大约1.2秒内处理2条消息,其中我正在重写的(传统)应用程序同时执行5-6条消息.(旧应用程序调用sprocs进行数据库访问.)

我的分析指向实体框架占用每条消息的大部分时间.

那么,我的选择是什么?

  • 那里有更好的ORM吗?
    (只支持正常读取和写入对象的东西,并且它很快...)

  • 有没有办法让实体框架更快?
    (注意:当我说速度更快时,我的意思是从长远来看,而不是第一次调用.(第一次调用很慢(消息为15秒),但这不是问题.我只需要它快速休息的消息.)

  • 一些神秘的第三选项,将帮助我提高我的服务速度.

注意:我的大多数数据库交互都是创建和更新.我做的很少选择和删除.

.net performance orm entity-framework

87
推荐指数
5
解决办法
11万
查看次数

Entity Framework如何使用递归层次结构?Include()似乎无法使用它

我有一个Item.Item有一个Category.

CategoryID,Name,ParentChildren.ParentChildrenCategory太.

当我为特定的LINQ to Entities查询时Item,它不返回相关的Category,除非我使用该Include("Category")方法.但它并没有带来父母和孩子的完整范畴.我能做到Include("Category.Parent"),但这个对象就像一棵树,我有一个递归的层次结构,我不知道它的结束.

如何让EF完全加载Category父项和子项,父项与父项和子项一起加载,依此类推?

这不适用于整个应用程序,出于性能考虑,仅需要此特定实体(类别).

c# entity-framework visual-studio-2008

69
推荐指数
5
解决办法
6万
查看次数

使用JDBC参数化IN子句的最佳方法是什么?

假设我有一个表单查询

SELECT * FROM MYTABLE WHERE MYCOL in (?)
Run Code Online (Sandbox Code Playgroud)

我想参数化参数.

有没有一种直接的方法在Java中使用JDBC,以一种可以在不修改SQL本身的情况下在多个数据库上工作的方式?

我发现的最接近的问题与C#有关,我想知道Java/JDBC是否有不同之处.

java sql jdbc in-clause

37
推荐指数
4
解决办法
6万
查看次数

JPA和Hibernate中N + 1问题的解决方案是什么?

我知道N + 1问题是执行一个查询以获取N个记录和N个查询以获取某些关系记录.

但是如何在Hibernate中避免它呢?

java orm design-patterns hibernate jpa

31
推荐指数
6
解决办法
4万
查看次数

Laravel雄辩地计算了一种关系

我是laravel和eloquent的新手,我不确定这是否可能.但是我有2张桌子,有一对多的关系.一个是"位置",一个是"用户".一个位置可以有很多用户.

因此,如果我希望获得所有用户的所有位置,我会这样做:

Location::with("users")->get();
Run Code Online (Sandbox Code Playgroud)

但我也想知道每个位置有多少用户,我试过这样做

Location::with("users")->count("users")->get();
Run Code Online (Sandbox Code Playgroud)

但那没用.

php laravel eloquent

28
推荐指数
3
解决办法
2万
查看次数

EF6中的Eager,Lazy和显式加载

我已经阅读了本教程本文,但我并不完全理解每种加载类型的用法.

我解释

我有这个POCO:

public partial class dpc_gestion
{
    public dpc_gestion()
    {
        this.ass_reunion_participant = new HashSet<ass_reunion_participant>();
        this.dpc_participant = new HashSet<dpc_participant>();
        this.dpc_reunion = new HashSet<dpc_reunion>();
    }

    public int dpc_id_pk { get; set; }
    public Nullable<int> dpc_id_gdp_fk { get; set; }
    public Nullable<int> dpc_id_theme { get; set; }
    public int dpc_id_animateur_fk { get; set; }
    public Nullable<System.DateTime> dpc_date_creation { get; set; }
    public Nullable<System.DateTime> dpc_date_fin { get; set; }
    public Nullable<System.DateTime> dpc_date_engag_anim { get; set; }
    public Nullable<bool> dpc_flg_let_engag_anim …
Run Code Online (Sandbox Code Playgroud)

c# orm entity-framework lazy-loading entity-framework-6

26
推荐指数
2
解决办法
1万
查看次数

如何在 .NET Core 3.0 Entity Framework 中执行组加入?

随着 .NET Core 3.0 的变化,我得到了

... NavigationExpandingExpressionVisitor' 失败。这可能表示 EF Core 中存在错误或限制。有关更多详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2101433。)---> System.InvalidOperationException:处理 LINQ 表达式“GroupJoin,...

这是一个非常简单的查询,因此必须有一种方法可以在 .NET CORE 3.0 中执行它:

 var queryResults1 = await patients
            .GroupJoin(
                _context.Studies,
                p => p.Id,
                s => s.Patient.Id,
                (p, studies) => new 
                {
                    p.DateOfBirth,
                    p.Id,
                    p.Name,
                    p.Sex,
                   Studies =studies.Select(s1=>s1)
                }
            )
            .AsNoTracking().ToListAsync();
Run Code Online (Sandbox Code Playgroud)

我基本上是在寻找一个 Linq 查询(或上面的方法语法),它将研究加入患者,并将研究设置为空列表或空列表,如果给定患者没有研究。

有任何想法吗?这在 .NET Core 2.2 中有效。此外,上面的 MSFT 链接提到关键突破性更改与客户端评估有关,并避免生成的查询读取整个表,然后必须加入或过滤客户端。然而,通过这个简单的查询,连接应该很容易在服务器端进行。

c# linq entity-framework .net-core .net-core-3.0

22
推荐指数
1
解决办法
2万
查看次数

实体框架 - 使用Include/eager加载和延迟加载之间的区别是什么?

我一直在努力熟悉实体框架.大部分内容似乎很简单,但我对使用Include方法和默认延迟加载的急切加载之间的区别感到困惑.两者似乎都加载了相关的实体,所以从表面看它们看起来像是做同样的事情.我错过了什么?

entity-framework lazy-loading eager-loading

18
推荐指数
3
解决办法
1万
查看次数

Grails:我如何通过hasMany关系搜索孩子?

如果我有一个客户端域类,并且该客户端有多个课程.我如何找到我正在寻找的课程?例如:

class Client {
    String name
    static hasMany = [courses:Course]
}

class Course {
    String name
    static belongsTo = [client:Client]
}

def client = Client.get(1)
Run Code Online (Sandbox Code Playgroud)

我想在那个课程关系中"找到"或"搜索".也许是这样的:

client.courses.find(name:'Whatever')
Run Code Online (Sandbox Code Playgroud)

有没有办法用Grails做到这一点?

grails

16
推荐指数
2
解决办法
2万
查看次数

使用guava缓存维护多个索引(内存表)

我正在尝试实现一个简化的内存缓存"表",其中有两种类型的索引:主要和次要.

  • 主索引将单个键(主键)映射到唯一值(Map接口)

  • 二级索引将单个键映射到值集合(Multimap符合条件)

非常类似于RDBMS世界中的表,其中一个表具有多个查找列.有时您希望通过PK进行搜索,有时会根据公共属性返回行列表.现在,除了equals(=)之外的其他操作没有必要(即没有范围查询或模式匹配).

将缓存语义添加到上述数据结构(逐出,数据填充/缓存加载,刷新等),这几乎是所需要的.

我想问一下你如何最好地解决问题的建议.应该是每个索引缓存还是缓存(对于PK)+(同步)二次索引的Multimap?

任何帮助深表感谢.

问候.

java indexing caching guava

16
推荐指数
1
解决办法
4707
查看次数