User defined functions in Entity Framework Core 7.0
Hello.
I'm porting my code from "classic" Entity Framework 6.4 to Entity Framework Core 7.0. What is replacement for the following code (User defined functions setup)? Most classes doesn't exist in both Devart.Data.SQLite and Microsoft.EntityFrameworkCore namespaces:
- public class StrLenFunctionConvention : IStoreModelConvention<EdmModel>
- {
- public void Apply(EdmModel item, DbModel model)
- {
- var inputParameter = FunctionParameter.Create("input", MyUDF.GetStringPrimitiveType(model), ParameterMode.In);
- var returnValue = FunctionParameter.Create("result", MyUDF.GetInt32PrimitiveType(model), ParameterMode.ReturnValue);
- var function = MyUDF.CreateAndAddFunction(item, "strlen", new[] { inputParameter }, new[] { returnValue });
- }
- }
- internal static class MyUDF
- {
- internal static EdmType GetStringPrimitiveType(DbModel model)
- {
- var typeUsage = TypeUsage.CreateStringTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), true, false);
- return model.ProviderManifest.GetStoreType(typeUsage).EdmType;
- }
- internal static EdmType GetInt32PrimitiveType(DbModel model)
- {
- var typeUsage = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32));
- return model.ProviderManifest.GetStoreType(typeUsage).EdmType;
- }
- internal static EdmFunction CreateAndAddFunction(EdmModel item, string name, IList<FunctionParameter> parameters, IList<FunctionParameter> returnValues)
- {
- EdmFunctionPayload payload = new EdmFunctionPayload
- {
- StoreFunctionName = name,
- Parameters = parameters,
- ReturnParameters = returnValues,
- IsBuiltIn = true
- };
- EdmFunction function = EdmFunction.Create(name, "CodeFirstDatabaseSchema", item.DataSpace, payload, null);
- item.AddItem(function);
- return function;
- }
- }