Возможно ли создать вычислимое свойство в коде EF, которое может использовать другие элементы собственной таблицы?Entity Framework Code First: Вычисленное свойство, которое может иметь доступ к собственной таблице
Если нет, то что это лучший способ сделать это без использования контекстного метода (я хотел бы, чтобы свойство связывало его с интерфейсом wpf без использования преобразователей)?
Этот пример показывает, что я пытаюсь сделать (тихо легко сделать в вычисляемое поле SQL):
class MyEntity{
public virtual decimal Amount { get; set; }
public virtual decimal DivideOfThisAmountOnAll
{
get
{
var sum = *******.sum(e=>e.Amount); //How am i supposed to acces to the others?
return this.Amount/sum;
}
}
}
Я согласен с этим в отдельном слое с вашей сущности, но я бы не предлагал вычислять агрегаты, как суммы (особенно в вашем случае, когда кажется, что вы хотите получить сумму по всей таблице). Агрегат над множеством элементов должен быть выбран как отдельный запрос, чтобы база данных эффективно обрабатывала агрегат. – AaronLS
Да, это зависит от случая использования. Если я вызываю сборку подробных записей InvoiceItem и все равно потянет их всех, я бы сделал сумму в памяти (избегая просмотра). Во многих других случаях это не было бы хорошей идеей. Мое общее правило состоит в том, чтобы делать вычисления в памяти, если коллекция «завершена» в контексте, в котором я находилась, и в противном случае запускать новый запрос. – Godeke