データベース関数とストアドプロシージャをEntityFrameworkにマッピングするのに役立つ素晴らしいライブラリがあります。
Nugetパッケージをインストールする
- Install-Package EntityFramework.Functions
関数の拡張メソッドを作成する:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
EntityFrameworkコンテキストにマップします:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
LINQクエリで新しくマップされた「ToNumber()」関数を呼び出します:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
そして、おじさんをボブします。
残念ながら、UTL_MATCH.EDIT_DISTANCE
などの別のスキーマに存在するOracle関数の場合 効果がないでしょう。スキーマを設定できるはずですが、現在Oracleなどで動作していないようです。ただし、SOUNDEX
などの他の機能については など。これは正常に機能するはずです。
EntityFramework.Functionsのドキュメントはこちら で読むことができます