Написание функции индивидуальной структуры объекта с помощью imethodcalltranslatorC#

Место общения программистов C#
Ответить
Anonymous
 Написание функции индивидуальной структуры объекта с помощью imethodcalltranslator

Сообщение Anonymous »

У меня есть запрос, который выглядит примерно так.

Код: Выделить всё

var railcars = DbContext.Railcars
.Select(r => new
{
Number = r.RailcarNumber,
Quantity = railcar.InboundQuantity
- DbContext.Transfers
.Where(t => t.FromType == TransferType.Railcar && t.FromId == railcar.Id)
.Sum(t => t.Quantity)
+ DbContext.Transfers
.Where(t => t.ToType == TransferType.Railcar && t.ToId == railcar.Id)
.Sum(t => t.Quantity)
};
Расчет для количества немного запутан, и я буду использовать этот расчет во многих различных местах. Поэтому я хотел немного упростить этот синтаксис. Что я действительно хотел бы сделать, так это создать свою собственную функцию и сделать ее конвертируемым в SQL что-то вроде следующего.

Код: Выделить всё

public static class QueryHelper
{
public static double GetCurrentQuantity(this Railcar railcar, ApplicationDbContext dbContext)
{
throw new InvalidOperationException("This method cannot be executed directly.");
}
}

var railcars = DbContext.Railcars
.Select(r => new
{
Number = r.RailcarNumber,
Quantity = QueryHelper.GetCurrentQuantity(r, DbContext)
};
Я изучал использование imethodcalltranslator для перевода необходимого кода в SQL. Но единственные примеры, которые я могу найти, кажутся старыми, и, например, подпись вызовов для imethodcalltranslator.translate () была совершенно другой.
Кроме того, я не уверен, как создать выражение как сложное, как мне нужно в sqlexpression (что является Translate () метод возвращает) p> p> p> p> p> p> p> p> p> p> p> p> p> prempression . /> Вопросы: < /p>

[*] Кто -нибудь знает, возможно ли это? Я на правильном пути?
Есть ли хорошие примеры этого?>

Подробнее здесь: https://stackoverflow.com/questions/771 ... translator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»