【问题标题】:How to manage multiple tables with the same structure (redux)如何管理具有相同结构的多个表(redux)
【发布时间】:2011-02-23 20:32:08
【问题描述】:
我发现了这个问题,和我想解决的一个问题类似:
How to manage multiple tables with the same structure
但是,由于 VB 的奇特性质,该解决方案并不能真正奏效。它特别不起作用,因为 VB.NET 需要显式声明接口中每个方法/属性的实现。
至于我真正想要解决的问题,这里是:
- 我在数据库中有许多具有相同结构的查找/域表
- 这些表格中的项目通常用于界面中的下拉菜单
- 我想避免使用一堆样板存储库方法来检索这些表的内容(当您有 40 个表时,每个表一个方法真的很糟糕)
- 我不使用 One True Lookup Table 反模式,这不是一种选择
有没有人有另一种可以在 VB 中工作的解决方案?
【问题讨论】:
标签:
vb.net
entity-framework
entity-framework-4
linq-to-entities
【解决方案1】:
通用存储库应该在这种情况下工作。有很多可用的online,或者您可以为查找表编写一个更简单的。
【解决方案2】:
这是我们最终使用的代码:
Public Function GetDomainTableList(tableName As String) As IEnumerable(Of Object)
Dim table = CType(GetType(FECEntities).GetProperty(tableName).GetValue(DB, Nothing), IEnumerable(Of Object))
Dim dt = From r In table
Select r
Return dt.ToList()
End Function
我最初认为这对我们不起作用,因为我试图将返回的每个对象投影到我编写的 DomainTableItem 类中。但后来我意识到SelectList 构造函数并不真正关心它所接受的对象类型。你只需传入一个包含属性名称的字符串,它使用反射来提取值。
所以一切都以这种方式进行,我避免为每个域/查找表编写一个方法。