Как управлять несколькими таблицами с одинаковой структурой (избыточность) - PullRequest
1 голос
/ 23 февраля 2011

Я нашел этот вопрос, который похож на проблему, которую я хотел бы решить:

Как управлять несколькими таблицами с одинаковой структурой

Однако,из-за потрясающей природы VB, решение на самом деле не работает.В частности, он не работает, потому что VB.NET требует, чтобы реализация каждого метода / свойства в интерфейсе была явно объявлена.

Что касается проблемы, которую я действительно пытаюсь решить, вот она:

  • У меня есть много таблиц поиска / домена в базе данных, которые имеют одинаковую структуру
  • Элементы в этих таблицах обычно используются для раскрывающихся списков в интерфейсе
  • Я бы хотел избежать множества стандартных методов репозитория для извлечения содержимого этих таблиц (один метод для каждой таблицы действительно отстой, когда у вас есть 40 таблиц)
  • Я не , используя One TrueАнти-шаблон таблицы поиска, и это не вариант

У кого-нибудь есть для этого другое решение, которое работает в VB?

Ответы [ 2 ]

0 голосов
/ 21 мая 2011

Вот код, который мы в итоге использовали:

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 не особо заботился о типе объекта, который он принимает. Вы просто передаете строку, содержащую имя свойства, и она использует отражение для извлечения значения.

Таким образом, все работает отлично, и я избегал написания одного метода для каждой области / таблицы поиска.

0 голосов
/ 24 февраля 2011

Универсальный репозиторий должен работать в этом случае.Есть много доступных онлайн или вы можете написать более простую только для справочных таблиц.

...