Có một Thư viện tuyệt vời để trợ giúp ánh xạ các chức năng của Cơ sở dữ liệu và Thủ tục được Lưu trữ tới Khung thực thể.
Cài đặt gói Nuget
- Install-Package EntityFramework.Functions
Tạo các phương thức mở rộng cho các chức năng:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
Ánh xạ nó trên EntityFramework Context của bạn:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
Gọi hàm "ToNumber ()" mới được ánh xạ của bạn trong các truy vấn LINQ của bạn:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
Và nhắc nhở Bác của bạn.
Thật không may, đối với các hàm Oracle nằm trong một lược đồ khác, như UTL_MATCH.EDIT_DISTANCE
nó sẽ không làm việc. Bạn được cho là có thể thiết lập lược đồ, nhưng có vẻ như nó hiện không hoạt động với Oracle hoặc thứ gì đó. Nhưng đối với các dự án khác như SOUNDEX
v.v ... điều này sẽ hoạt động tốt.
Bạn có thể đọc Tài liệu cho EntityFramework.Functions tại đây