0

我们正在开发一个使用 C# 编写并使用 NHibernate 将对象映射到数据库的医院信息系统。MVC 模式用于将业务逻辑与 UI 分离。问题来了,

如何将可变大小的不同字符串集传递给 UI?

例如,一个Contact对象有一个名为的属性,该属性City保存了哪个城市联系人居住。在编写应用程序的国家/地区有 80 多个城市。你怎么能把这些城市写到一个组合框中?(或数据网格、表格……)在此示例中,城市编号是固定的。很长一段时间没有必要添加另一个城市。(如果城市列表发生变化,重新编译不是问题)

例如,一个Contact对象有另一个名为的属性FooBar,它将保存 1000 个不同的字符串值,这些值将从该属性的组合框中选择。如果用户愿意,这个集合可以增长。您如何使用这些值加载组合框?(如果字符串列表静态写入组合框对象,重新编译是有问题的)

我有不同的解决方案如下

  1. 在代码或设计器中静态写入组合框的所有字符串值
  2. 从资源文件中获取值
  3. 将这些值写入 XML 文件(实际上与上面相同,但无需重新编译)
  4. 使用 NHibernate创建一个City对象并将值从表中获取到列表中CITY
  5. 创建一个StringHolder具有TypeandValue属性的类。所有字符串值(包括CityFooBar)都将写入一个名为 的表中STRINGHOLDER。并通过 NHibernate 使用“CITY”或“FOOBAR”等键获取这些值。

你会选哪一个?或者你能给我推荐一个吗?

谢谢大家

4

3 回答 3

1

我会投票支持解决方案#4。这就是我在类似情况下一直这样做的方式。这似乎是一个更清洁的解决方案。

于 2008-10-20T13:01:47.323 回答
0

如果这些位置实际上要用于任何事情,请将它们放入数据库中。如果数据“没有真正使用”,但提供了城市查询以使用户界面更好,那么 XML 文件选项也不是一个坏方法。

通过使用,我的意思是列出纽约的所有员工之类的东西。如果它是“死数据”,只是为了显示,请选择需要最少工作量和最小风险的解决方案 - 这可能是文件选项。

于 2008-10-20T13:16:52.783 回答
0

您对使用 List<string> 获取城市列表有何感受?在 DAL 或 BL 中加载此字符串列表,然后将其传递给 UI。

同样的解决方案也应该适用于 FooBar 值。

如果您有与 City 或 FooBar 相关联的 ID,例如 NY,并且它在 DB 中的数字 ID 为 1,那么您可以使用 KeyValuePair<TKey, TValue>。使用泛型,您可以指定此 KeyValuePair 中的数据。城市名称或 FooBar 的字符串值可以是键,数字 ID 可以是值。

只需2美分。

于 2008-10-20T17:54:18.997 回答