以下の出力パラメータを持つストアドプロシージャがあります。これは、SQLサーバーで完璧に動作しているSQL Serverの出力パラメータがEFでNULL値を示していますC#
ALTER proc [dbo].[CRS_GetNewMessageCount]
@CaseId int,
@Type varchar(50),
@Location varchar(50),
@Count int out
as
begin
if @location='admin'
begin
if @type='consumer'
select @Count=(Select count(fdId) from tb_CRS_Messages where [email protected] and fdIsConsumerType=1 and fdIsReadatAdmin=0)
else
select @Count=(Select count(fdId) from tb_CRS_Messages where [email protected] and fdIsMemberType=1 and fdIsReadatAdmin=0)
end
else
begin
if @type='consumer'
select @Count=(Select count(fdId) from tb_CRS_Messages where [email protected] and fdIsConsumerType=1 and fdIsReadatFront=0)
else
select @Count=(Select count(fdId) from tb_CRS_Messages where [email protected] and fdIsMemberType=1 and fdIsReadatFront=0)
END
SELECT @Count
END
が出力以下を参照してください。
私はEntity Framework
を通じてこのstored procedure
を呼び出しています:
using (DbContext db = new DbContext())
{
try
{
var NewMessage = new ObjectParameter("Count", typeof(int));
int returnValue = 0;
db.CRS_GetNewMessageCount(CaseId, type, location, NewMessage);
int.TryParse(NewMessage.Value.ToString(), out returnValue);
return returnValue;
}
catch { return 0; }
}
それは、出力パラメータにnull
値を与えます。
助けてください。
を助け、それがSQL管理スタジオで働きますか? – jamiedanq
'SELECT @ Count'の使用は冗長です。 'null'を入力するので、' out'パラメータの値を取得しません。 –
これは、ストアドプロシージャの横のFirstOrDefault()を使用して解決しました。 ご協力いただきありがとうございます。 –