В настоящее время я работаю над приложением в ASP.NET MVC, в котором есть несколько справочных таблиц, все в форме
LookUp {
Id
Text
}
Как видите, это просто отображает Id в текстовое значение. Они используются для таких вещей, как цвета. Теперь у меня есть несколько таких, в настоящее время 6 и, вероятно, скоро будет больше.
Я пытаюсь собрать API, который можно использовать через AJAX, чтобы позволить пользователю добавлять / перечислять / удалять значения из этих таблиц поиска, поэтому, например, у меня может быть что-то вроде:
http://example.com/Attributes/Colours/[List/Add/Delete]
Моя текущая проблема в том, что независимо от того, какую таблицу поиска я использую, все остальное происходит точно так же. Так что на самом деле не должно быть никакого повторения кода вообще.
В настоящее время у меня есть собственный маршрут, который указывает на «AttributeController», который вычисляет рассматриваемую атрибутивную / справочную таблицу на основе URL (т. Е. http://example.com/Attributes/Colours/List хотел бы таблицу «Цвета»). Я передаю атрибут (Цвета - строка) и операцию (Список / Добавить / Удалить), а также любые другие необходимые параметры (скажем, «Красный», если я хочу добавить красный в список) обратно в мой репозиторий, где происходит фактическое работа выполнена.
Здесь все становится грязно, так как в данный момент я прибегаю к переключению / регистру строки атрибута, который затем может получить сущность Linq-to-Sql, соответствующую конкретной таблице поиска. Я нахожу это довольно грязным, поскольку мне приходится писать одни и те же операции для каждой из искомых сущностей, тьфу!
Что я действительно хотел бы сделать, так это иметь какое-то отображение, которое я мог бы просто передать в имени атрибута и получить некоторую форму универсального объекта поиска, с которым я мог бы выполнять нужные операции, не заботясь о типа.
Есть ли способ сделать это с моими сущностями Linq-To-Sql? Я попытался заставить их реализовать базовый интерфейс (IAttribute), который просто указывает свойства Id / Text, однако, что-то подобное делает не так:
System.Data.Linq.Table<IAttribute> table = GetAttribute("Colours");
Поскольку я не могу преобразовать System.Data.Linq.Table<Colour>
в System.Data.Linq.Table<IAttribute>
.
Есть ли способ сделать эти справочные таблицы "общими"?
Прошу прощения за то, что это что-то вроде мусорной свалки Здесь определенно не хватает информации, поэтому просто дайте мне знать, если вам нужны какие-либо подробности. Ура!