我尝试使用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();
答案 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()