Выбор схемы для таблицы поиска SQL в контексте LINQ to SQL: sql_variant или нескольких полей - PullRequest
0 голосов
/ 23 октября 2010

У меня есть вопрос, похожий на this , но в контексте L2S.Я хочу создать таблицу поиска для хранения значений, которые могут быть одним из нескольких возможных типов данных.Как предложено в указанном вопросе, я мог бы использовать sql_variant тип данных.Однако L2S отображает sql_variant в Object, что является неоптимальным.Я предполагаю, что можно получить метаданные таблицы, чтобы узнать точный тип, но я ожидаю, что это будет слишком грязно.Кто-нибудь пробовал это?

Другая возможность состоит в том, чтобы разделить данные по нескольким таблицам, каждая из которых содержит одно строго типизированное поле и главную таблицу, которая будет содержать дискриминатор.Но здесь я сталкиваюсь с другой проблемой: L2S поддерживает только один тип наследования: таблица на иерархию классов.Поэтому, естественно, моей следующей мыслью было поместить все столбцы значений и дискриминатор в одну таблицу.Таким образом, у меня мог быть абстрактный родительский класс и несколько наследующих членов.Столбцы должны называться как-то как ValueInt, ValueDec и т. Д., Хотя в ORM я могу переименовать их все в Value.Таким образом, это похоже на правильное решение, но все еще немного неловко: все NULL в таблице для одного.Кто-нибудь с лучшими мыслями?

PS Кроме того, все значения поиска в настоящее время хранятся в виде applicationSettings в файле конфигурации, который обеспечивает строгую типизацию, но есть и другие проблемы с ним.

1 Ответ

0 голосов
/ 15 декабря 2010

Наконец-то я документировал решение, которое в итоге реализовал. Статью можно найти здесь: http://www.codeproject.com/KB/vb/custom-settings-provider.aspx Надеюсь, это кому-нибудь пригодится.

...