【发布时间】:2015-03-10 19:52:39
【问题描述】:
我在使用 C# ASP 编写的网站遇到问题,该网站使用 Entity Framework 作为数据库。我用来存储和检索称为 DowntimeEvent 的数据的数据模型之一包含 2 个列表 AffectedSystems 和 AffectedDepartments。当我在 Visual Studio 中运行应用程序时,这些列表可以很好地存储和检索。但是,如果我停止并重新启动应用程序,DowntimeEvents 仍然存储在我的数据库中,但是当我尝试检索受影响部门和受影响系统的列表时,它们是空的。
这是我用来存储数据的模型
public class DowntimeEventModel
{
[Key]
public int ID { get; set; }
[Required]
public DateTime StartDateTime { get; set; }
[Required]
public DateTime EndDateTime { get; set; }
public int LocationID { get; set; }
[Required]
public string Description { get; set; }
//public int DepartmentID { get; set; }
//public int SystemID { get; set; }
public virtual ICollection<int> AffectedSystems { get; set; }
public virtual ICollection<int> AffectedDepartments { get; set; }
//public virtual ICollection<SystemModel> AffectedSystems { get; set; }
//public virtual ICollection<DepartmentModel> AffectedDepartments { get; set; }
}
这是我如何保存数据的示例控制器,顺便说一句,这似乎在存储列表方面工作得很好。
[HttpPost]
public ActionResult DowntimeEvent(DowntimeEventModel downtimeEvent)
{
PowerteqContext.DowntimeEvents.Add(downtimeEvent);
PowerteqContext.SaveChanges();
return View(SetupDowntimeEventViewModel());
}
正是这种方法提示我在尝试编写此报告并试图弄清楚为什么 AffectedSystems 有时为空而有时不为空后,数据检索存在问题。在内部 foreach 循环中,我尝试直接访问 ListAffectedSystems 只是为了查看循环是否可能不是 null 并且它是在重新启动之后,但如果我添加它们并且不重新启动则不是。
public ActionResult ReportUptimeBySystems()
{
var EndTime = DateTime.Now;
var StartTime = DateTime.Now.AddDays(-28);
var uptimeHours = new TimeSpan(1);
if (EndTime != StartTime)
uptimeHours = EndTime - StartTime;
List<ReportUptimeBySystem> SysUps = new List<ReportUptimeBySystem>();
var DownTimes = PowerteqContext.DowntimeEvents.AsEnumerable();
var Systems = PowerteqContext.Systems.AsEnumerable();
foreach (var x in Systems)
{
ReportUptimeBySystem sys = new ReportUptimeBySystem();
sys.SystemTimeUP = uptimeHours;
sys.SystemName = x.SystemName;
foreach (var y in DownTimes)
{
if(PowerteqContext.DowntimeEvents.Find(y.ID).AffectedSystems.Contains(x.ID))
{
sys.SystemTimeUP -= y.StartDateTime - y.EndDateTime;
}
}
SysUps.Add(sys);
}
return View(SysUps);
}
另一位开发人员建议问题可能出在我的实体框架配置中。但我什至不知道该去哪里解决这个问题。
作为参考,可以在此处找到整个应用程序。我使用的数据库是 Microsoft SQL Serverhere
【问题讨论】:
标签: c# sql-server asp.net-mvc entity-framework asp.net-mvc-4