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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 2019-07-14
        相关资源
        最近更新 更多