Мы ищем помощь людей, использующих Telerik DataAccess ORM. В последнее время мы столкнулись с большой проблемой производительности с помощью NULL-ключа.Telerik DataAccess (OpenAccess) с производительностью с нулевым внешним ключом
Когда мы присваиваем значение nullable int foreign key property (без SaveChanges) - Telerik делает несколько вызовов в базе данных и выполняет какую-то странную работу. Мы использовали dotTrace и обнаружили, что существует множество запросов SQL DataReader и некоторые странные преобразователи string/DateTime/Enum/.... Эта проблема появляется, когда мы устанавливаем значение для свойства, get работает нормально.
Немного о нашей среде. Мы попытались создать пустую консольную программу. Вызывается тот же странный код, но он намного быстрее в локальной среде - ~ 60 мс для небольшой Entity и локальной db. Для большого объекта это ~ 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.