2012-10-15 32 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条款使用表值函数使用等。

相关问题