我尝试使用SQLCE数据库实现工作单元。 一切都正常,除了一件事。
我有一个场景,患者可以执行不同的会话,每个会话都基于特定的测试。这些是实现:
public class Patient
{
public int Id { get; set; }
public byte[] IdentificationCode { get; set; }
public string Sex { get; set; }
public virtual List<Session> Sessions { get; set; }
}
public class Session
{
public int Id { get; set; }
public Guid Unique { get; set; }
public DateTime DateTime { get; set; }
public virtual Patient Patient { get; set; }
public virtual Test Test { get; set; }
public virtual List<VideoExerciseResult> VideoSessionResults { get; set; }
public virtual List<AudioExerciseResult> AudioSessionResults { get; set; }
}
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<Session> Sessions { get; set; }
}
当我执行测试时,数据实际上已保存,我可以直接查看会话的结果。
但是当我再次运行应用程序并加载会话时,结果和会话中的测试显示为空(而Patient,Id和Unique具有正确的值)。
private void GetSessionData()
{
// List<Test> tempList = new List<Test>(UOW.Tests.GetAll());
// List<AudioExerciseResult> tempList1 = new List<AudioExerciseResult>(UOW.AudioSessionsResults.GetAll());
switch (SelectedSession.Test.Name)
{
我发现在调用Session对象之前加载数据库的测试和结果列表将使Session对象中的Test和Results的值正确显示。
在DB的世界中,显然有一些我不理解的东西。有人可以澄清为什么我必须加载数据库中的值列表吗?
我不清楚我会更准确地解释......