如何在Entity Framework Code-first中使用现有的存储过程和函数

3

我正在使用Entity Framework.Functions库,该库用于在使用Entity Framework code-first时调用存储过程或函数。

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

对于方法AddRecord_SP,System.Nullable`1[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]在概念模型中不作为结构类型支持。

该函数在我的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);
}

请添加调用 AddRecord_SP 的代码以获取更多详细信息。 - Ali Soltani
我没有任何代码调用这个方法。我只有在数据上下文类中定义我的SP结构。 - ali shamekhi
1个回答

0
据我所知,存储过程实际上不能指定参数为非空。

也许您可以尝试指定返回参数。
 [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>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接