【问题标题】:Better way for storing database IDs and lookup names存储数据库 ID 和查找名称的更好方法
【发布时间】:2023-03-03 20:58:02
【问题描述】:

我目前在我的代码中的静态变量中存储了一个包含相关信息(包括数据库 ID)的测试列表。这是一个例子:

public static class IsokineticTests
{
    // Cervical Spine Group
    public static MyopathologyTest NeckFlexors = MyopathologyTest.Create(600, "Neck Flexors");
    public static MyopathologyTest AnteriorObliques = MyopathologyTest.Create(601, "Anterior Obliques");
    public static MyopathologyTest NeckExtensors = MyopathologyTest.Create(602, "Neck Extensors");
    public static MyopathologyTest PosteriorObliques = MyopathologyTest.Create(603, "Posterior Obliques");
    public static MyopathologyTest LateralFlexion = MyopathologyTest.Create(604, "Lateral Flexion");

    // Shoulder Group
    public static MyopathologyTest ShoulderAbductors = MyopathologyTest.Create(610, "Shoulder Abductors");
    public static MyopathologyTest ShoulderExtensors = MyopathologyTest.Create(611, "Shoulder Extensors");
    public static MyopathologyTest ShoulderFlexors = MyopathologyTest.Create(612, "Shoulder Flexors");
    public static MyopathologyTest ShoulderLateralRotators = MyopathologyTest.Create(613, "Shoulder Lateral Rotators");
    public static MyopathologyTest ShoulderMedialRotators = MyopathologyTest.Create(614, "Shoulder Medial Rotators");
}

这些然后通过其他静态属性获取方法用于创建测试组:

public static class IsokineticTestGroups
{
    public static IsokineticTestGroup CervicalSpine
    {
        get
        {
            return IsokineticTestGroup.Create("Cervical Spine", 
                    new List<MyopathologyTest>
                       {
                            IsokineticTests.NeckFlexors,
                            IsokineticTests.AnteriorObliques, 
                            IsokineticTests.NeckExtensors,
                            IsokineticTests.PosteriorObliques,
                            IsokineticTests.LateralFlexion
                       });
        }
    }
}

我现在遇到的问题是基本上没有办法在 MyopathologyTest 中查找特定 ID。一种解决方案是创建一个字典并手动将所有这些测试插入到字典中,并以 ID 作为键。不过,这似乎重复了很多代码。

实现这样的事情的正确方法是什么?我想我需要外部化测试数据,在运行时加载测试并生成正确的查找表和组在飞行中。这是我应该考虑的正确方法还是有更好的方法?

【问题讨论】:

  • 为什么不将所有这些数据(包括组)存储在数据库中?
  • 我已经在使用 SQLite 数据库来获取测试结果,我想我的想法是将来更改某些数据会变得过于困难。但是,既然您和蒂姆提到了它,我认为没有理由不能拥有一个包含这些信息的单独数据库。

标签: c# data-structures c#-4.0 lookup-tables


【解决方案1】:

为什么不将测试信息保存在 SQLite 等数据库中,并使用 ADO.NET 库根据需要获取数据?响应时间几乎是瞬时的,因此您无需在字典中存储许多测试对象。

【讨论】:

  • 嗯,这是一个将在客户端运行的应用程序。数据库 ID 引用存储测试结果的 SQLite 表中的 TestID 字段。要最初在数据库中填充测试,仍需要将测试存储在代码或外部,然后在初始化时填充数据库,然后在将来添加测试需要更新用户的数据库。听起来这种方法变得更加复杂。也许我应该将它们存储在一个单独的数据库中...
猜你喜欢
  • 2011-11-05
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 2019-06-10
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
相关资源
最近更新 更多