gpt4 book ai didi

c# - Telerik DataAccess (OpenAccess) 可空外键性能

转载 作者:行者123 更新时间:2023-12-03 03:09:42 26 4
gpt4 key购买 nike

我们正在寻求 Telerik DataAccess ORM 用户的帮助。最近,我们遇到了可空外键的大性能问题。

当我们为 nullable int 外键属性赋值时(没有 SaveChanges) - Telerik 多次调用数据库并执行一些奇怪的工作。我们使用dotTrace,发现有很多SQL DataReader调用和一些奇怪的string/DateTime/Enum/...转换器。仅当我们为属性设置值时才会出现此问题,get 工作正常。

关于我们的环境的一些信息。我们尝试创建一个空的控制台应用程序。调用相同的奇怪代码,但在本地环境中要快得多 - 对于小型实体和本地数据库,大约需要 60 毫秒。对于大型实体,大约需要 1.5 秒,但在我们使用 Azure Sql DB 的生产服务器中 - 需要 10 到 50 秒

备注:我们尝试直接加载和设置对象,而不使用外键,但没有帮助。

public class Entity
{
public int? ParentId { get; set; } // Wee see this issue when we set value to the ParentId or Parent property. SaveChanges is not called.

public Parent Parent { get; set; }
}

Here您可以找到 dotTrace 调用堆栈。

最佳答案

终于解决了这个问题。我想警告所有使用 IsManaged 配置的人。每次设置 ParentId 或 Parent 实体时,具有指定 ParentId 的所有子项都会加载到内存中。即使启用了延迟加载。

Telerik 同意可以优化此行为,但由于向后兼容性,他们不想进行任何更改。

关于c# - Telerik DataAccess (OpenAccess) 可空外键性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40487137/

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