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

标签 c# asp.net-mvc entity-framework entity-framework-4 entity-framework-6

我正在使用 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/

相关文章:

javascript - 选择没有最后一个空格的潜水文本

java - 什么是得墨忒耳法则?

时间:2019-03-17 标签:c#protobufreflectionus

c# - 是否可以在 'RightToLeft' 属性设置为 'Yes' 的组合框中使用左对齐文本?

c# - 搭建脚手架时如何指定在 View 中使用哪个外键列

c# - 无法将来自不同项目的新脚手架项目添加到我的 Web 项目 (MVC 5)

c# - Entity Framework 在循环集合中返回 NULL

c# - 如何调试 "cannot convert to system.collections.generic.list"错误

asp.net - 如何使用 mvc 中的自定义成员身份添加更多自定义字段?

c# - ASP.NET MVC C# 搜索帮助