В настоящее время мы осуществляем миграцию проекта, поэтому структура сущностей получает доступ к «старым» данным в наших базах данных, которые она не записывала.
Во время наших тестов мы столкнулись с любопытной проблемой при получении данных из базы данных.
var someid = "someId";
var objectSet = context.CreateObjectSet<TEntity>();
result = objectSet.Where(e => e.someId == someId).ToList();
Выполнение этого запроса приводит к ожидаемым записям, но также вызывает «набор» для другого свойства класса TEntity.
Это произошло с нами, так как набор вызвал исключение из-за другой ошибки.
«Set» не возникает, когда данные были записаны с EntityFramework, и использование MergeOption «NoTracking» также предотвращает это.
У устанавливаемого свойства есть тип «Byte []», и между новыми строками данных и старыми нет визуальных различий.
Мы воспроизвели поведение в Oracle и базы данных MSSQL, поэтому поставщики, вероятно, не являются причиной.
Какие могут быть возможные причины этого происшествия?
Edit:
Свойство отражает некоторые внутренние значения, также относящиеся к обратной совместимости.
Для него устанавливаются данные, хранящиеся в базе данных, ранее равные нулю.
Отображение:
<Property Type="Binary" Name="DataInternal" MaxLength="Max" FixedLength="false" cg:GetterAccess="Internal" cg:SetterAccess="Internal" />
<Property Name="Data" Type="varbinary(max)" />