Я пытаюсь увлажнить список из ~ 400 бизнес-объектов, и производительность становится очень низкой, когда требуется гидрировать строки. Для гидратации 400 объектов требуется более 20 сек.
EDIT
Мы используем MySQL 5.1 и dotConnect для MySQL v5.0.12 в качестве поставщика данных http://www.devart.com/dotconnect/mysql/
Я сделал несколько тестов, чтобы сузить его до типов строк, вызывающих проблемы. Я начал измерять время с записи 2 до n, чтобы игнорировать время, которое может занять время загрузки других сборок.
Следующий код увлажняет 1 объект за 0 мс
objUserInfo.PortalID = portalId
objUserInfo.IsSuperUser = Convert.ToBoolean(dr("IsSuperUser"))
objUserInfo.UserID = Convert.ToInt32(dr("UserID"))
Это также гидратирует 1 объект за 0 мс
objUserInfo.PortalID = portalId
objUserInfo.IsSuperUser = Convert.ToBoolean(dr("IsSuperUser"))
objUserInfo.UserID = Convert.ToInt32(dr("UserID"))
objUserInfo.Firstname = "FirstName"
Однако, как только я выполняю преобразование объекта datareader в строку, это занимает в среднем 53 мс
objUserInfo.PortalID = portalId
objUserInfo.IsSuperUser = Convert.ToBoolean(dr("IsSuperUser"))
objUserInfo.UserID = Convert.ToInt32(dr("UserID"))
objUserInfo.Firstname = Convert.ToString(dr("FirstName"))
Я также попробовал увлажнить 2 струны и, как ни странно, это не ухудшило производительность почти так же, как 1 струна?
Следующему требуется в среднем 57 мс для увлажнения 1 объекта
objUserInfo.PortalID = portalId
objUserInfo.IsSuperUser = Convert.ToBoolean(dr("IsSuperUser"))
objUserInfo.UserID = Convert.ToInt32(dr("UserID"))
objUserInfo.Firstname = Convert.ToString(dr("FirstName"))
objUserInfo.LastName = Convert.ToString(dr("LastName"))
Я знаю, что многие люди используют приведенный выше синтаксис для увлажнения бизнес-объектов. Есть ли более эффективный / быстрый способ сделать это?
EDIT
Просто сделал еще один тест, который должен был выполнить прямую трансляцию на строку, и она выдает те же медленные скорости :( 53 мс, просто чтобы выполнить приведение.
objUserInfo.FirstName = DirectCast("alex", String)