Linq to Entities中的SQL用户定义函数

时间:2012-02-09 16:13:57

标签: sql linq entity-framework entity-framework-4 linq-to-entities

我试图使用实体框架在我的linq语句中调用用户定义的sql函数。该函数名为GetXml,并带有2个名为“data”和“path”的字符串并返回一个字符串。我的数据模型称为XmlDataModel。我将函数定义包含在edmx文件中,如下所示:

    <Function Name="GetXml" ReturnType="varchar(max)"   Schema="dbo">
      <Parameter Name="path" Type="varchar(max)" Mode="In" />
      <Parameter Name="data" Type="varchar(max)" Mode="In" />
    </Function>

我的代码中有以下方法声明:

    [EdmFunction("XmlDataModel.Store", "GetXml")]
    public string GetXml(string path, string data)
    {
        throw new NotSupportedException("This method can only be used in a LINQ-toEntities query");
    }

以下linq声明:

var test = from e in this.ObjectContext.Events 
           where GetXml("a", "b") == "test" select e.EventSpecificData;

我的问题是,当我尝试查看结果集时,收到以下消息:

  

指定的方法'System.String GetXml(System.String,   System.String)'在类型'RIAServicesLibrary1.Web.XmlDomainService'上   无法转换为LINQ to Entities存储表达式,因为   调用它的实例不是ObjectContext   评估使用它的查询。

似乎认识到我已经定义了方法,因为当我取出[EdmFunction]标签时,我得到了不同的消息。有什么想法吗?

0 个答案:

没有答案