asp.net-mvc - 如何立即访问保存的行
问题描述
我用 EF 技术在 Asp MVC 中编写了一些代码,我有条件行来查找今天日期的行,如果我没有找到我将它添加到数据库,然后将保存的行用于另一个进程,但是当我刷新错误时我得到错误页面它工作正常!我认为我的代码不能异步工作!任何人都可以帮助我找到我的错误吗?
public ActionResult LineRegimeSave(string breakFast, string snake1, string lunch, string snake2, string snake3,string dinner, string snake4,string adviseText, string docFooterId)
{
ApplicationDbContext myContext = new ApplicationDbContext();
var docFooter = docFooterId != "null" ? myContext.DocFooters.Single(d => d.Id.ToString() == docFooterId) : null;
var strLine="BreakFast,"+ breakFast + "/Snake1,"+ snake1 + "/Lunch,"+ lunch + "/Snake2,"+ snake2 + "/Snake3,"+ snake3 + "/Dinner,"+ dinner + "/Snake4,"+snake4;
TriageRecord getMedicalRecId;
var userId = Session["NID"];
var userProfile = myContext.UserProfiles.Single(b => b.NationalId.ToString() == userId.ToString());
getMedicalRecId = myContext.TriageRecords.Where(u => u.UserProfile.Id == userProfile.Id)
.OrderByDescending(d => d.DateTime).First();
if (getMedicalRecId.DateTime.Date != DateTime.Today)
{
TriageRecord insert = new TriageRecord
{
Bust = getMedicalRecId.Bust,
Diastolic = getMedicalRecId.Diastolic,
HeartRate = getMedicalRecId.HeartRate,
Systolic = getMedicalRecId.Systolic,
Height = getMedicalRecId.Height,
Weight = getMedicalRecId.Weight,
Wrist = getMedicalRecId.Wrist,
Waist = getMedicalRecId.Waist,
Hips = getMedicalRecId.Hips,
UserProfile = getMedicalRecId.UserProfile,
DateTime = DateTime.Now
};
insert.MedicalRecord = new MedicalRecord
{
TriageRecord = insert,
VisitDate = DateTime.Now,
};
myContext.TriageRecords.Add(insert);
myContext.SaveChanges();
getMedicalRecId = myContext.TriageRecords.Where(u => u.UserProfile.Id == userProfile.Id)
.OrderByDescending(d => d.DateTime).First();
getMedicalRecId.MedicalRecord.MedicalRecordDetails.Add
(
new MedicalRecordDetail
{
DateTime = DateTime.Now,
VisitMode = "LineDiet",
VisitSummary = strLine,
DocFooter = docFooter,
AdviseText = adviseText
}
);
myContext.SaveChanges();
}
else
{
getMedicalRecId.MedicalRecord.MedicalRecordDetails.Add
(
new MedicalRecordDetail
{
DateTime = DateTime.Now,
VisitMode = "LineDiet",
VisitSummary = strLine,
DocFooter = docFooter,
AdviseText = adviseText
}
);
myContext.SaveChanges();
}
return RedirectToAction("LineRegimePrint",new { id = getMedicalRecId.Id});
}
此行发生错误:
getMedicalRecId.MedicalRecord.MedicalRecordDetails.Add
(
new MedicalRecordDetail
{
DateTime = DateTime.Now,
VisitMode = "LineDiet",
VisitSummary = strLine,
DocFooter = docFooter,
AdviseText = adviseText
}
);
错误文本是:空引用...谢谢。
更新 :
insert.MedicalRecord = new MedicalRecord
{
TriageRecord = insert,
VisitDate = DateTime.Now,
};
myContext.TriageRecords.Add(insert);
myContext.SaveChanges();
我需要更改此代码吗?
var a = insert.MedicalRecord = new MedicalRecord
{
TriageRecord = insert,
VisitDate = DateTime.Now,
};
myContext.TriageRecords.Add(insert);
myContext.MedicalRecords.Add(a);
解决方案
因此,根据您的说法,每当您尝试将项目添加到列表时就会出现问题,但它说该对象为空,因此您需要检查这一点。
public ActionResult LineRegimeSave(string breakFast, string snake1, string lunch, string snake2, string snake3,string dinner, string snake4,string adviseText, string docFooterId)
{
...
getMedicalRecId = myContext.TriageRecords.Where(u => u.UserProfile.Id == userProfile.Id).OrderByDescending(d => d.DateTime).First();
if(getMedicalRecId != null) {
if (getMedicalRecId.DateTime.Date != DateTime.Today)
{
...
insert.MedicalRecord = new MedicalRecord
{
TriageRecord = insert,
VisitDate = DateTime.Now,
MedicalRecordDetails = new List<MedicalRecordDetail>(){ new MedicalRecordDetail
{
DateTime = DateTime.Now,
VisitMode = "LineDiet",
VisitSummary = strLine,
DocFooter = docFooter,
AdviseText = adviseText
}
};
myContext.SaveChanges();
}
}
else
{
....
}
else
{
throw new Exception("The current user profile has no triage records!");
}
return RedirectToAction("LineRegimePrint",new { id = getMedicalRecId.Id});
}
推荐阅读
- javascript - Liff.getProfile() 正在返回一个未定义的对象
- javascript - Bcrypt vs Script Crypto 哪个最安全
- git - 我可以使用 GitBash 推送和拉取对 GitHub 的更改,但在 Visual Studio 中出现 Permission Denied (publickey) 错误
- c++ - 为什么c ++将空格键视为空('\ 0')?
- python - 如何在循环中扩展numpy数组
- android - 开关盒在旋转时改变状态
- python - Django 和 Express.js 有什么区别?
- spring-boot - 有没有办法更新 ConcurrentMessageListenerContainer 中的并发数?
- sql - 删除某些列为零的重复数据
- powerbi - DAX:请检查我是否正确理解了 DAX 中 Variabes 的使用