EF核心存储过程:在发布多个参数时,获取“找不到隐式类型数组的最佳类型”错误

时间:2016-12-31 15:24:44

标签: c# stored-procedures entity-framework-core

我尝试使用EF核心的存储过程。我的目的是从数据库表获取行数,但我不能发送多个参数。我收到一个错误:

  

找不到隐式类型数组的最佳类型

其实我不知道如何使用Linq语法。提前致谢

存储过程:

create proc sp_getExistorNExistCountStd 
    @Date datetime2(7),
    @ClassId int,
    @Absent bit,
    @Count int out
as
begin
    select @Count = COUNT(*) 
    from RollCalls
    where DateRollCall = @Date 
      and ClassId = @ClassId 
      and [Absent] = @Absent

    return @Count
end

C#

int ExistStdCount = db.RollCalls.FromSql("sp_getExistorNExistCountStd @p0 ,@p1, @p2",
                       // getting error in this section
                       parameters: new[] {DateTime.Now.Date, classIds[i], true }).FirstOrDefault();   

2 个答案:

答案 0 :(得分:0)

我没有找到使用输出参数计算行数的解决方案,但我达到了另一个解决方案..这个方法给了我想要的东西

\\?\PhysicalDrive<X>
Create proc [dbo].[sp_getExistorNExistCountStd] 
    @Date datetime2(7),
    @ClassId int,
    @Absent bit     
    as
    begin

        select Id from RollCalls
        where DateRollCall=@Date 
        and ClassId=@ClassId 
        and [Absent]=@Absent
    end

答案 1 :(得分:0)

为什么使用存储过程?
EF生成的sql非常聪明。您尝试过:db.RollCalls.Where(rc => DateTime.Now.Date.Equals(rc.DateRollCall)/* && other conditions */).Count()