C# 模型和表上的值一直显示为空
我有一个名为C# 模型和表上的值一直显示为空,c#,sql,ado.net,C#,Sql,Ado.net,我有一个名为PCRStatusLog的表,其中有一列名为PromoteDate。此列提供excel工作表中的数据从暂存发送到主数据库的日期。这是一个新列,尚未使用,因此对于大多数记录,它为空,但我们需要将此列的数据显示到我们的webapp。大多数这样做的逻辑已经存在,并且模型是从VisualStudio数据库中的EF Designer生成的ADO.NET实体模型 在表中,PromoteDate为DATETIME且可为空(SQL Server),表的模型如下所示: public parti
PCRStatusLog
的表,其中有一列名为PromoteDate
。此列提供excel工作表中的数据从暂存发送到主数据库的日期。这是一个新列,尚未使用,因此对于大多数记录,它为空,但我们需要将此列的数据显示到我们的webapp。大多数这样做的逻辑已经存在,并且模型是从VisualStudio数据库中的EF Designer生成的ADO.NET实体模型
在表中,PromoteDate
为DATETIME
且可为空(SQL Server),表的模型如下所示:
public partial class PCRStatusLog
{
// ... list of fields and properties
public Nullable<System.DateTime> PromoteDate { get; set; }
}
它获取对象上的所有属性,所有内容看起来都正确,并且匹配数据库中的内容,除了这个PromoteDate属性
我错过什么了吗
请注意,此模型中的所有其他字段都有效,所有其他字段都显示数据库中的数据,这一个字段是唯一不起作用的字段。我从这里开始:Change
var promoteDateQuery=(来自providerMasterContext.PCRStatusLogs中的psl,其中psl.BulkUploadID==item.FileID选择psl).FirstOrDefault();
to…(为了清晰起见,在下一个注释中继续)var promoteDateQuery=(来自providerMasterContext.PCRStatusLogs中的psl).ToList();
这是一个临时更改,只是为了测试。查看promoteDateQuery
中的结果,看看您的已知实例是否存在以及它是否有日期。您甚至可以这样做:var promoteDateQuery=(来自providerMasterContext.PCRStatusLogs中的psl,其中psl.PromoteDate!=null)。ToList()
基本上,强制返回你想要的结果,看看你是否得到它。这只是一种解决问题并缩小问题范围的方法。
public List<PCRTracking> GetPCRTrackingDetails()
{
//...
List<PCRTracking> pcrDetails = (from bulk in providerMasterContext.BULK_UPLOADS
join ps in providerMasterContext.PROCESSSTATUS on bulk.ProcessStatusID equals ps.ProcessStatusID
join p in providerMasterContext.PLANs on bulk.PlanCode equals p.PlanCode
where bulk.CreateDate > compDateTime
orderby bulk.BulkUploadID descending
select new PCRTracking
{
FileID = bulk.BulkUploadID,
FileName = bulk.BulkUploadActualFileName,
PlanName = p.PlanCode,
FileStatus = string.Empty,
RecordsSubmitted = 0,
RecordsFailed = 0,
ValidationStatusReports = string.Empty,
ErrorMessage = string.Empty,
Submitter = bulk.SubmissionByID,
SubmitterName = bulk.SubmissionByName,
SubmitDate = (DateTime)bulk.SubmissionDateTime
}).ToList<PCRTracking>();
foreach (PCRTracking item in pcrDetails)
{
var promoteDateQuery = (from psl in providerMasterContext.PCRStatusLogs
where psl.BulkUploadID == item.FileID
select psl).FirstOrDefault();
item.PromoteDate = promoteDateQuery.PromoteDate;
//... rest of the code doesn't make use of PromoteDate
// from the Main method of a test console project
var providerMasterContext = new BulkPCRDAL().providerMasterContext;
var query =(from psl in providerMasterContext.PCRStatusLogs
where psl.BulkUploadID == 43
select psl).FirstOrDefault();
foreach(var prop in query.GetType().GetProperties())
{
Console.WriteLine(prop.GetValue(query));
}
Console.ReadLine();