Я материализую сущности с помощью хранимой процедуры в Entity Framework Code-First. Хранимая процедура принимает параметр int и выводит как выборку записей, так и несколько выходных параметров. По какой-то причине я возвращаю Null обратно к своим выходным параметрам, в то время как выполнение Proc из студии SQL Management приводит к ожидаемому поведению; все выходные параметры имеют значения. Мои сущности материализуются, так что, по крайней мере, это работает ...
Код EF
SqlParameter DocsWithHits = new SqlParameter()
{
ParameterName = "DocumentsWithHits",
Direction = System.Data.ParameterDirection.Output,
Value = null,
SqlDbType = System.Data.SqlDbType.Int
};
SqlParameter TotalGB = new SqlParameter()
{
ParameterName = "TotalGb",
Direction = System.Data.ParameterDirection.Output,
Value = null,
SqlDbType = System.Data.SqlDbType.Float
};
ObservableCollection<SearchResult> ResultCollection;
ResultCollection = new ObservableCollection<SearchResult>(db.Database.SqlQuery<SearchResult>(
"exec ListSearchResultsWithTotals @SearchAnalysisID, @DocumentsWithHits, @RelatedDocuments, @TotalDocuments, @TotalGb, @DocumentsWithHitsNotExported, @RelatedDocumentsNotExported, @TotalDocumentsNotExported, @TotalGbNotExported",
new SqlParameter
{
ParameterName = "SearchAnalysisID",
Value = this.SearchAnalysisId
},
DocsWithHits,
TotalGB));
SQL Profiler
SQL, сгенерированный из метода SqlQuery, приведен ниже. Я запечатлел это в Profiler. При выполнении я получаю записи и нулевые выходные параметры.
declare @p4 int
set @p4=NULL
declare @p5 float
exec sp_executesql N'exec ListSearchResultsWithTotals @SearchAnalysisID, @DocumentsWithHits, @TotalGb',N'@SearchAnalysisID int,@DocumentsWithHits int output,@TotalGb float output',@SearchAnalysisID=170,@DocumentsWithHits=@p4 output,@TotalGb=@p5 output
select @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11
Я неправильно использую SqlParameter или как?