In my database I have define some function, let's say it's called fnTest
.
Is it possible to call that function from my LINQ/EF query? Something like this:
var param3, param4;
var res = (from x in db.Something
where x.field1 > 0
orderby fnTest(x.f1, x.f2, param3, param4)
select x).Take(20);
As you can see, I need that function to execute on DB side because I need to sort data using value that it returns. First two parameters are fields from the table, and second two parameters are some numbers that will change in program, but will be constant for each query.
Is it possible to somehow call function that is already created in the DB? Or do I need to use something like this:
((IObjectContextAdapter) context).ObjectContext.CreateQuery
and write the query manually?
Use sql queries for entities. For exaples look on msdn: http://msdn.microsoft.com/en-us/data/jj592907.aspx
First off,
fnTest
will have to be created as a user-defined function in the database first:Then in your .edmx file, declare the function like this:
Now you can bind this function to a method in your model like this:
You can now use this method in standard LINQ queries.
Further Reading