我试图用 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; }
}
当我执行测试时,数据实际上被保存了,我可以直接去查看会话的结果。
但是当我再次运行应用程序并加载会话时,会话中的结果和测试显示为 null(而 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 对象之前加载数据库的 Tests 和 Results 列表将使 Session 对象内的 Test 和 Results 的值正确显示。
显然,在 DB 的世界中有些东西我不明白。有人可以澄清我为什么必须从数据库加载值列表吗?
我不清楚我会更准确地解释......