Я использую в своем проекте много LINQ-запросов и бизнес-методов.
Чтобы разрешить использование этого бизнес-метода из Iqueryable:
- Я определил функции UDF в SQL Server (с необходимыми параметрами)
- Добавьте этот UDF к модели приложения EDMX
И создайте шлюз между UDF и LinQ с помощью такого метода в
частичный класс, который наследует от dbcontext:
[EdmFunction("MyProject.Store", "GetTaxesOfProduct")]
public static Decimal GetTaxesOfProduct(Decimal amount, Int32 TaxMethod)
{
throw new NotSupportedException("Not direct access possible, use with E-SQL or LINQ");
}
Это прекрасно работает для IQueryable.
Но проблема в том, что, чтобы использовать этот метод из простого объекта (не связанного с записью в базе данных), мне нужно сделать что-то жуткое, как это:
var query = from foo in context.JustATable select context.GetTaxesOfProduct(15.55, 3);
А недавно я наткнулся на этого http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx, который объясняет, как с помощью выражения можно создать метод, который можно использовать из объектов C # и IQueryable
Итак, с помощью выражения можно ли сделать бизнес-методы похожими на мой метод, но без использования UDF и просто выражений?
Заранее спасибо!