1

我试图用 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 的世界中有些东西我不明白。有人可以澄清我为什么必须从数据库加载值列表吗?

我不清楚我会更准确地解释......

4

0 回答 0