我们正在研究一个用C#编写的医院信息系统,并使用NHibernate将对象映射到数据库。 MVC模式用于将业务逻辑与UI分离。这是问题,
如何为UI添加可变大小的不同字符串集?
例如,Contact
对象有一个名为City
的属性,用于保存哪个城市联系人。在该应用程序编写的国家/地区有超过80个城市。你怎么能把这些城市写成一个组合框? (或数据网格,表格......)在此示例中,城市号码是固定的。没有必要长时间添加另一个城市。 (如果城市列表发生变化,重新编译不是问题)
例如,Contact
对象具有另一个名为FooBar
的属性,该属性将保存1000个不同的字符串值,并且将从该属性的组合框中选择这些值。如果用户需要,可以增加这个集合。如何使用这些值加载组合框? (如果字符串列表静态写入组合框对象,则重新编译是个问题)
我有以下不同的解决方案
City
对象,并使用NHibernate CITY
表中获取值
StringHolder
的类,其中包含Type
和Value
属性。所有字符串值(包括City
和FooBar
)都只会写在一个名为STRINGHOLDER
的表中。并使用NHibernate的“CITY”或“FOOBAR”等键获取这些值。全部谢谢
答案 0 :(得分:1)
我会投票给解决方案#4。这就是我在类似情况下一直这样做的方式。这似乎是一个更清洁的解决方案。
答案 1 :(得分:0)
如果这些位置实际上将用于任何事情,请将它们带入数据库。如果数据“没有真正使用”,但提供了城市查找以使用户界面更好,那么XML文件选项也不是一个坏的方法。
通过使用,我的意思是列出所有在纽约的雇主和类似的东西。如果它是“死数据”,只是要显示,请选择需要最少工作量和最小风险的解决方案 - 这可能是文件选项。
答案 2 :(得分:0)
您对List< string>的使用感觉如何?获取城市列表?在DAL或BL中加载此字符串列表,然后将其传递给UI。
同样的解决方案也应该对FooBar值有益。
如果你有与City或FooBar相关联的ID,比如说NY和它在DB中的数字ID是1,那么你可以使用KeyValuePair< TKey,TValue>。使用泛型,您可以指定此KeyValuePair中的数据。城市名称或FooBar的字符串值可以是键,数字ID可以是值。
只需2美分。