我正在使用 EF4,dotnet 4。我想创建一个 edmx 函数来帮助我从 xml 列 (SQLServer 2008R2) 获取 xml 值。我的问题与发布在Entity Framework Query Xml上的问题基本相同
我首先在我的 C# 文件中创建函数,如下所示:
[System.Data.Objects.DataClasses.EdmFunction("ModelNamespace", "String_XmlField")]
public static String XmlField(this String data, String path)
{
throw new Exception("Not implemented");
}
下一部分进入了我的 edmx(正确的 csdl 模式):
<Function Name="String_XmlField" ReturnType="Edm.String">
<Parameter Name="data" Type="Edm.String" />
<Parameter Name="path" Type="Edm.String" />
<DefiningExpression>
data.value(path, "nvarchar(max)")
</DefiningExpression>
</Function>
我正在尝试像这样使用它:
source = source.Where(x => x.NewData.XmlField("(//IDPat/node())[1]") == "3152");
我得到的错误是:“准备函数'ModelNamespace.String_XmlField'的定义时发生错误。有关详细信息,请参阅内部异常。”,带有消息“'value'不是类型的成员'的内部异常当前加载的模式中的 Edm.String'。靠近简单标识符,第 2 行,第 18 列。
我很确定错误在于原始响应中缺少 edmx 部分,但我找不到问题。