[英]Stored procedure returns nullable DateTime instead of a varchar
我有一个问题,我在存储过程中将一列定义为 varchar,但是当我将它添加到我的 C# 程序时,EntityFramework 使用可空的 DateTime 的原始字段类型。 我认为问题可能出在第二个 select 语句中,因为我使用相同的字段名称但不是 100% 确定。
存储过程:
SELECT
1 AS [SORT]
,CONVERT(VARCHAR, t1.RecDate, 120) AS [RecDate]
,t1.Program AS [Program]
,t1.Currency AS [CURRENCY]
,t1.SupplierName AS [SupplierName]
,t1.SupplierAccount AS [SupplierAccount]
,t1.RecStatus AS [RecStatus]
,t4.Type AS [TYPE]
,CONVERT(VARCHAR, t1.Date, 120) AS [PiDate]
,CONVERT(VARCHAR, t1.DiscountedDate, 120) AS [DiscountedDate]
,CONVERT(VARCHAR, t1.DueDate, 120) AS [DueDate]
,t1.PaymentAmount AS [Payment]
FROM orb_RootRecords t1
LEFT JOIN orb_SupplierRecords t3 on t3.OrbianAccountId = t1.SupplierAccount
LEFT JOIN orb_AccountType t4 on t4.Id = t3.AccountTypeId
WHERE FLOOR(CAST(t1.RecDate as float)) = FLOOR(CAST(@runDate as float))
--ORDER BY [SORT], [Program] ,[CURRENCY] ,[RecDate] ,[SupplierName] ,[SupplierAccount],[RecStatus] ,[TYPE],[PiDate] ,[DiscountedDate] ,[Payment]
UNION
SELECT 2 AS [SORT], [RecDate], Program AS [Program], [CURRENCY], null AS [SupplierName], null AS [SupplierAccount], null AS [RecStatus], null AS [TYPE], null AS [PiDate], null AS [DiscountedDate], null AS [DueDate]
,SUM (PaymentAmount) AS [Payment]
FROM orb_RootRecords t2
where FLOOR(CAST(t2.RecDate as float)) = FLOOR(CAST(@runDate as float))
Group by [RecDate], [Program], [CURRENCY]
ORDER BY [RecDate], [Program], [CURRENCY], [Sort], [SupplierName], [SupplierAccount], [RecStatus], [TYPE], [PiDate], [DiscountedDate], [DueDate], [Payment]
实体框架结果:
public partial class orb_rpt_reconciliation_report_Result
{
public int SORT { get; set; }
public Nullable<System.DateTime> RecDate { get; set; }
public string Program { get; set; }
public string CURRENCY { get; set; }
public string SupplierName { get; set; }
public string SupplierAccount { get; set; }
public string RecStatus { get; set; }
public string TYPE { get; set; }
public string PiDate { get; set; }
public string DiscountedDate { get; set; }
public string DueDate { get; set; }
public Nullable<decimal> Payment { get; set; }
}
我期待看到公共字符串 RecDate { get; 放; } 而不是上面显示的。
根据两条评论 - 将 [RecDate] 更改为 convert(varchar, t2.RecDate, 120) As [RecDate] 并且能够正确地设置 output class。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.