Я вызываю хранимую процедуру (используя SQL Server 2012) в своем приложении C # и преобразую результаты в объект ac #.Объект имеет свойство datetime
, и хранимая процедура возвращает дату в виде одного из своих столбцов.Свойство объекта datetime
всегда имеет значение 01/01/0001 00:00:00
при анализе результата запроса.
Вот мой код для использования хранимой процедуры, объект, используемый для анализа результатов, и сама фактическая хранимая процедура
public IEnumerable<InvoicingReportDto> GetInvoivingReportPerUser(DateTime startdate, DateTime enddate)
{
string sproc = "[Updater].[InvoicingReportPerUser] @STARTDATE, @ENDDATE";
var result = dbContext.Database.SqlQuery<InvoicingReportDto>
(
sproc,
new SqlParameter("@STARTDATE", startdate.Date),
new SqlParameter("@ENDDATE", enddate.Date)
);
return result.ToList();
}
public class InvoicingReportDto
{
public DateTime LastUpdate { get; set; }
public string UpdatedBy { get; set; }
// other properties omitted
}
Хранимая процедура SQL Server:
CREATE PROCEDURE [Updater].[InvoicingReportPerUser]
@STARTDATE DATETIME,
@ENDATE DATETIME
AS
BEGIN
SELECT
CAST(LastUpdate as DATE) AS LastUpdateDate,
UpdatedBy,
SUM(CASE WHEN CompanyStatusID = 1 THEN 1 ELSE 0 END) AS [NoStatus],
SUM(CASE WHEN CompanyStatusID = 2 THEN 1 ELSE 0 END) AS Complete,
SUM(CASE WHEN CompanyStatusID = 3 THEN 1 ELSE 0 END) AS [CeasedTrading],
SUM(CASE WHEN CompanyStatusID = 4 THEN 1 ELSE 0 END) AS [NoInterested],
SUM(CASE WHEN CompanyStatusID = 5 THEN 1 ELSE 0 END) AS [Wrongnumber],
SUM(CASE WHEN CompanyStatusID = 6 THEN 1 ELSE 0 END) AS [FirstCall],
SUM(CASE WHEN CompanyStatusID = 7 THEN 1 ELSE 0 END) AS [SecondCall],
SUM(CASE WHEN CompanyStatusID = 8 THEN 1 ELSE 0 END) AS [ThirdCall],
SUM(CASE WHEN CompanyStatusID = 9 THEN 1 ELSE 0 END) AS [Research],
SUM(CASE WHEN CompanyStatusID = 10 THEN 1 ELSE 0 END) AS [EmailRequired],
SUM(CASE WHEN CompanyStatusID = 11 THEN 1 ELSE 0 END) AS [Liquidation],
SUM(CASE WHEN CompanyStatusID = 12 THEN 1 ELSE 0 END) AS [Receivership],
SUM(CASE WHEN CompanyStatusID = 13 THEN 1 ELSE 0 END) AS [NotListed]
FROM
Table
JOIN
Updater.CompanyStatus CS ON CS.ID = CompanyStatusID
WHERE
LastUpdate BETWEEN CAST(@STARTDATE AS DATE) AND CAST(@ENDATE AS DATE)
GROUP BY
CAST(LastUpdate as DATE), UpdatedBy
ORDER BY
CAST(LastUpdate as DATE)
END
Я ожидаю, что у моего объекта Dto будет установлено свойство LastUpdate
, отражающее дату, возвращаемую хранимой процедурой, но это всегда 01/01/0001