У меня вышеупомянутые отношения между двумя таблицами.Я написал ниже скомпилированный запрос:
internal static readonly Func<DataClasses1DataContext, int, CRMDataType, int, IEnumerable<CustomField>> GetCRMCustomFields = CompiledQuery.
Compile<DataClasses1DataContext, int, CRMDataType, int, IEnumerable<CustomField>>
((context, parentId, parentType, dataParentId) => context.tblCRMCustomFields.Where(f =>f.ParentType == (int)parentType)
.Select(f => new CustomField(parentId, parentType, f.CreationDate) { Description = f.Description, Value = f.tblCRMCustomFieldsDatas.Single(d=>parentId == dataParentId).StringValue
,Id = f.Id }));
В запросе я начинаю с запроса таблицы tblCRMCustomField для создания пользовательского объекта (CustomField).Во время запроса / заполнения объекта CustomField я устанавливаю его значение, используя другой запрос, для tblCRMCustomFieldsData:
Value = f.tblCRMCustomFieldsDatas.Single(d=>parentId == dataParentId).StringValue
Не следует ли создавать это исключение, если f.tblCRMCustomFieldsDatas.Single (d => parentId == dataParentId)имеет значение null или не существует?
При тестировании он отлично заполняет объект CustomField и просто оставляет значение null.Это то, что я хочу, я просто ожидал, что .Single () сгенерирует исключение, так как последовательность пуста.