Не могу понять, как вычислить вычисляемое поле в Lightswitch
У меня следующая проблема - я хотел бы вычислить поле в моей базе данных на основе простого запроса и деления. Сначала немного информации о моей структуре базы данных:
|WorkingUnits|-1---------n-|Materials|
ei отношение один-ко-многим между WU и материалами.
Это две таблицы и связь между ними. В таблице WorkingUnits у меня есть вычисляемое поле WUAmount. Также у каждого рабочего подразделения есть "Цена". То же самое касается Материалов - у каждого из них есть "Цена". В конце концов, я хотел бы добиться суммирования всех цен на все материалы, назначенные определенной рабочей единице, и поделить их на цену самой рабочей единицы.
Пока я пытаюсь сделать следующее:
partial void WUAmount_Compute(ref decimal result)
{
//decimal amount = 0;
IDataServiceQueryable<WorkingUnit> query;
query = from WorkingUnit in this.DataWorkspace.ApplicationData.WorkingUnits
where WorkingUnit.Materials != null
select WorkingUnit;
foreach (WorkingUnit detail in query)
{
result = this.WUPrice / (result + detail.Materials.Sum(s => s.Price).Value);
}
}
Но я получаю Внутреннее исключение:
Cannot compare elements of type 'System.Data.Objects.DataClasses.EntityCollection`1'.
Only primitive types, enumeration types and entity types are supported.
Я довольно новичок в Lightswitch и LINQ и пока не могу понять это. Любая помощь приветствуется.
1 ответ
Если я вас правильно понимаю, все, что вам нужно, это:
partial void WUAmount_Compute(ref decimal result)
{
result = (this.Materials.Sum(x => x.Price) / this.WUPrice);
}