gpt4 book ai didi

c# - 如何通过 Entity Framework 代码优先使用现有的存储过程和函数

转载 作者:行者123 更新时间:2023-12-02 08:20:20 24 4
gpt4 key购买 nike

我正在使用 EntityFramework.Functions 库,当我们使用 Entity Framework 代码优先时,该库用于调用存储过程或函数。

我有一个返回可为空的长整型值的存储过程。但我收到一个错误:

System.Nullable`1[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] for method AddRecord_SP is not supported in conceptual model as a structural type.

这些函数在我的 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>();

关于c# - 如何通过 Entity Framework 代码优先使用现有的存储过程和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39555499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com