2012-10-15 57 views
0

Entity Framework當前支持在SSDL中定義的表值函數和自定義函數,但在where子句中我找不到任何用作條件的示例。Entity Framework當前是否支持Where子句中的自定義函數?

例子:

var query = this.db.People; 
query = query.Where(p => FullText.ContainsInName(p.Id, "George")); 

在這個例子中,ContainsInName是,我想查詢的where子句中要執行我的自定義功能。

它是否支持?

回答

0

它不會支持這樣的功能。這就是說,如果你只是想看看是否p.Id是一些字符串您發送裏面,你可以這樣做:

query.Where(p => "George".Contains(p.Id));

注意String.Contains發生在一個stringchar比較。如果p.Idint,你可以這樣做:

query.Where(p => "George".Contains(p.Id.ToString()));

這將運行在數據庫級別的查詢。

0
  1. 找出您的模式命名空間。在XML編輯器中打開的.edmx,你會在頂部

    `<Schema Namespace="My.Project.Name.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas... 
    
  2. 找到像這樣導入您的功能集成到架構。

  3. 與靜態函數

    public static class FullText 
    { 
        [EdmFunction("My.Project.Name.Store", "ContainsInName")] 
        public static bool ContainsInName(int Id, string Name) 
        { 
         throw new NotImplementedException("You can only call this method as part of a LINQ expression"); 
        } 
    } 
    

創建一個靜態類然後在你的例子:)

不知道有關where條款使用表值函數使用等。

相關問題