繁体   English   中英

存储过程返回可为空的 DateTime 而不是 varchar

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM