Не могу понять, как вычислить вычисляемое поле в 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);
}
Другие вопросы по тегам