У меня есть база данных со следующими отношениями:
Вычисления -
Мне нужно l oop все вычисления и затем запросить соответствующие строки BinaryData. Запрос для BinaryData представляет собой простое предложение where в BinaryData.bdCalculationKey. Выполнение этого запроса немедленно возвращается, когда он выполняется автономно, но при выполнении его внутри цикла вычислений он выдает исключение из памяти. Код выглядит следующим образом:
var groupName = "NYPH";
var serverName = "192.168.100.132";
var tahitiDB =
new BTR.Evolution.Data.DataContexts.Legacy.Profile.BtrProfile(
BTR.Evolution.Core.Registry.ProfileDatabase( groupName, serverName )
) { ObjectTrackingEnabled = false, DeferredLoadingEnabled = false, CommandTimeout = 30 };
var data = tahitiDB.Calculations.Where(c => c.Profile.Client.cName == groupName && !c.calcIsFailed);
data.Count().Dump();
tahitiDB.BinaryDatas
.Where(b => b.bdCalculationKey == new Guid( "3d53aa12-0353-e911-83b4-005056b9729f" ) )
.Dump();
foreach( var p in data )
{
p.calcKey.Dump();
tahitiDB.BinaryDatas
.Where(b => b.bdCalculationKey == p.calcKey )
.Select(b => new { b.bdKey, b.bdCalculationKey, b.bdFilename, b.bdDateCreated })
.Dump();
break;
}
Вот снимок экрана с результатом LINQPad (также показан успешный дамп запроса за пределами l oop):
![enter image description here](https://i.stack.imgur.com/BHlte.png)
Обновление : Я полагаю, что голосование "за" закрыто из-за запрошенной информации из комментария. Полный код указан выше. Не уверен, что еще можно сказать о Таити. Это просто скомпилированный L2S DataContext
. При необходимости я могу опубликовать тысячи строк сгенерированного кода. Что касается таблиц Calculations
и BinaryData
, обе таблицы имеют первичные ключи Guid. В вычислениях есть метки времени создания / обновления, пара «битовых / логических» флагов о состоянии, несколько внешних ключей Guid и два столбца BLOB-объектов Xml для хранения входных данных и данных для расчета. BinaryData имеет метки времени создания / обновления, несколько текстовых полей для имени / типа двоичных данных, несколько внешних ключей Guid (в зависимости от того, кому принадлежат двоичные данные) и поле содержимого Binary для фактического кэшированного документа.