如何管理具有相同结构的多个表(redux)

时间:2011-02-23 20:32:09

标签: vb.net entity-framework entity-framework-4 linq-to-entities

我发现了这个问题,这个问题类似于我想解决的问题:

How to manage multiple tables with the same structure

然而,由于VB的可能性,该解决方案并不真正起作用。它特别不起作用,因为VB.NET要求显式声明接口中的每个方法/属性的实现。

至于我真正试图解决的问题,这里是:

  • 我在数据库中有许多查找/域表,它们都具有相同的结构
  • 这些表中的项目通常用于界面中的下拉列表
  • 我想避免一堆样板存储库方法来检索这些表的内容(当你有40个表时,每个表的一个方法真的很糟糕)
  • 使用One True Lookup Table反模式,这不是一个选项

有没有人有另一种解决方案可以在VB工作?

2 个答案:

答案 0 :(得分:0)

通用存储库应该适用于这种情况。有许多可用的online或者你可以只为查找表编写一个更简单的。{/ p>

答案 1 :(得分:0)

以下是我们最终使用的代码:

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构造函数并不真正关心它所接受的对象类型。你只需传入一个包含属性名称的String,它就会使用反射来提取值。

所以一切都按照这种方式运行,我避免为每个域/查找表编写一个方法。