標準インポート・メカニズムを使用することができません。構成可能なファンクションはファンクションのインポート・リストに表示されないためです。しかし、私はこのように動作するスカラー値を返す関数を得ることができた:エンティティ・フレームワークとPostgresql:ストアド・プロシージャからレコードを戻す
"選択された関数とストアドプロシージャのインポート..."を選択せずに "データベースからの更新モデル"を使用する。これはedmx-fileに関数の項目を生成します。これは正しい戻り値の型を手動で変更します。
<Function Name="get_customer_name" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="public" ReturnType="text">
<Parameter Name="p1" Type="bigint" Mode="In" />
</Function>
は、その後、私は、次のクラス定義を追加します。この後
public class DBFunctions
{
[EdmFunction("dbNamespace.Store", "get_customer_name")]
public static string GetCustomerName(long id)
{
throw new NotSupportedException("Direct calls are not supported.");
}
}
を、私は私のクエリでDBFunctions.GetCustomerName(id)を呼び出すことができます。
しかし、私はどのように複雑なタイプでこの作業を行うことができますか?たとえば、postgresqlのように定義されたcustomer_addressという名前の型(コード整数、アドレステキスト)があり、戻り値の型がcustomer_addressのget_customer_address(id)という関数があるとします。クエリでその関数をどのように呼び出すことができますか?たとえば、私は書くことができるようにしたい
var addressList = (from customer
select GetCustomerAddress(customer.id)).ToList();
ここでGetCustomerAddressはカスタムAddressオブジェクトを返します。返された列とクラス属性の間のマッピングを提供するにはどうしたらいいですか、edmx-fileの正しい戻り値の型は何ですか?
ありがとうございますが、クエリで使用するedm関数である必要があります。 – eko