Ada Pustaka yang luar biasa untuk membantu memetakan fungsi Basis Data dan Prosedur Tersimpan ke Kerangka Entitas.
Instal paket Nuget
- Install-Package EntityFramework.Functions
Buat Metode Ekstensi untuk fungsi:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
Petakan di Konteks EntityFramework Anda:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
Panggil fungsi "ToNumber()" yang baru dipetakan dalam kueri LINQ Anda:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
Dan potong Pamanmu.
Sayangnya, untuk fungsi Oracle yang berada dalam skema yang berbeda, seperti UTL_MATCH.EDIT_DISTANCE
itu tidak akan bekerja. Anda seharusnya dapat mengatur skema, tetapi sepertinya saat ini tidak berfungsi dengan Oracle atau sesuatu. Tapi untuk fungsi lain seperti SOUNDEX
dll. ini akan berfungsi dengan baik.
Anda dapat membaca Dokumentasi untuk EntityFramework.Functions di sini