私は EF4、dotnet 4 を使用しています。xml 列 (SQLServer 2008R2) から xml 値を取得するのに役立つ edmx 関数を作成したいと考えています。私の質問は基本的に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' の定義の準備中にエラーが発生しました。詳細については、内部例外を参照してください。 Edm.String' が現在読み込まれているスキーマにあります。単純な識別子の近く、2 行目、18 列目。"
元の応答に欠落している edmx 部分にエラーがあると確信していますが、問題を見つけることができません。