下面是如何建立與LINQ表達式樹和實體框架的查詢做一個簡單的動態查詢的例子:
public void TestEF()
{
using (DbContext db = new ElFaktura.Data.CustomerEntities())
{
var expr = CreateQuery<Customer>("FirstName", "Lorentz");
var result = db.Set<Customer>().Where(expr);
Debug.Print(result.ToString());
}
}
public Expression<Func<Customer, bool>> CreateQuery<T>(string field, string value)
{
var paramExpr = Expression.Parameter(typeof(T));
var propExpr = Expression.Property(paramExpr, field);
var equalsExpr = Expression.Equal(propExpr, Expression.Constant(value));
return Expression.Lambda<Func<Customer,bool>>(equalsExpr, paramExpr);
}
生成的SQL是
SELECT
[Extent1].[ID] AS [ID],
[Extent1].[Email] AS [Email],
[Extent1].[AddressID] AS [AddressID],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName]
FROM [dbo].[Customers] AS [Extent1]
WHERE (N'Lorentz' = [Extent1].[FirstName])
不是百分之百確定到底你在問什麼,但我認爲LINQ表達式樹http://msdn.microsoft.com/en-us/library/bb397951.aspx可能被用來解決你的問題。 –
這看起來很有希望。基本上我想用這個來通過EF查詢SQL。 –