如何使用现有的存储过程使用实体框架代码优先
本文关键字:框架 实体 代码 何使用 存储过程 | 更新日期: 2023-09-27 18:07:21
我使用的是EntityFramework.Functions
库,当我们使用实体框架代码时,它用于调用存储过程或函数。
我有一个存储过程,它返回一个可空的长值。但是我得到一个错误:
System.Nullable ' 1[[系统。Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]方法AddRecord_SP在概念模型中不支持作为结构类型。
函数在我的DataContext
类中声明:
[Function(FunctionType.StoredProcedure, "Sp_name", Schema = "acnt")]
public virtual ObjectResult<Nullable<long>> AddRecord_SP(string i_Params)
{
var i_ParamsParameter = i_Params != null ?
new ObjectParameter("I_Params", i_Params) :
new ObjectParameter("I_Params", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<long>>("Sp_name", i_ParamsParameter);
}
据我所知,存储过程实际上不能指定参数不可为空。
可以尝试指定返回参数。
[return: Parameter(DbType = "")]
下面是我项目中的示例代码,您可以参考。
[Function(FunctionType.StoredProcedure, "GetTop100", Schema = "biz")]
public IQueryable<GetTop100Emp> GetTop100EmpList(long? FKTenant, int IsFilter)
{
var parameters = new ObjectParameter[] {
new ObjectParameter("FKTenant", FKTenant),
new ObjectParameter("IsFilter", IsFilter),
};
return this.ObjectContext.ExecuteFunction<GetTop100Emp>("GetTop100", parameters).AsQueryable<GetTop100Emp>();