【发布时间】:2016-11-17 21:05:04
【问题描述】:
我们正在向使用 Telerik DataAccess ORM 的人寻求帮助。最近,我们遇到了一个可空外键的大性能问题。
当我们将值分配给可为空的 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调用栈。
【问题讨论】:
标签: c# azure telerik openaccess