Одним словом, да, это возможно. Однако я не верю, что это хорошая идея. То, о чем вы на самом деле говорите, - это сохранение данных презентации в вашей базе данных, когда действительно лучшее место для размещения это на самих страницах aspx. При этом, если вы хотите хранить информацию о типе словаря данных в вашей БД, я бы рекомендовал использовать встроенные представления sys.tables
, sys.columns
и sys.types
, встроенные в MS SQL Server, и добавить таблица с именем ObjectDescriptions
для хранения отображаемого имени и типа.
create table ObjectDescriptions (
object_id int not null,
column_id null, --leave this column null if the record describes the table itself
ObjectDisplayName nvarchar(20),
ObjectDescription nvarchar(200)
);
Затем вы можете создать представление на основе идентификатора объекта для извлечения метаданных вашей таблицы и либо напрямую связать, либо динамически заполнить ваш asp.net FormView
.
create view TableData as
select
t.name as table_name
,td.ObjectDisplayName as table_display_name
,td.ObjectDescription as table_description
,c.name as column_name
,cd.ObjectDisplayName as column_display_name
,cd.ObjectDescription as column_description
,c.column_id
,ty.name as [type_name]
,c.max_length
,c.scale
,c.[precision]
from sys.tables t
left join ObjectDescriptions td on td.object_id = t.object_id
join sys.columns c on c.object_id = t.object_id
left join ObjectDescriptions cd on cd.column_id = c.column_id and cd.object_id = c.object_id
join sys.types ty on c.user_type_id = ty.user_type_id
EDIT:
Затем вы можете использовать это представление в своем коде ASP, написав класс, содержащий ваши метаданные об одной таблице, и написав метод в вашем DAL для извлечения экземпляра этого класса на основе имени объекта или таблицы. Когда вы заполняете свою страницу, страница может извлечь как искомую запись, так и метаданные таблицы, и связать эти метаданные либо с заголовками сетки (в виде списка), либо с сопровождающими текстовыми полями отдельной метки в одном режим записи.