0

我正在搜索有关在 asp.NET 动态站点中配置自己的元数据的信息。

例如。我在 MS Sql Server 中有一个表,其结构如下所示:

CREATE TABLE [dbo].[someTable](
    [id] [int] NOT NULL,
    [pname] [nvarchar](20) NULL,
    [FullName] [nvarchar](50) NULL,
    [age] [int] NULL)

我有 2 个 Ms Sql 表(我已经创建),sysTables 和 sysColumns。

系统表:

ID sysTableName 表名 TableDescription

1 | someTable |Persons |关于系统中人员的所有数据

系统列:

ID TableName sysColumnName ColumnName ColumnDesc ColumnType MUnit

1 |一些表 | sometable_pname| 姓名 | 角色名称(例如约翰)| nvarchar(20) | 空
2 |someTable | sometable_Fullname| 全名 | 角色名称(例如 John Black)| nvarchar(50) | 空
3 |someTable | sometable_age| 年龄 | 人年龄| 整数 | 无效的

我希望在Details/Edit/Insert/List/ListDetails页面中用作 MetaData sysColumns 和 sysTableData。因为,例如。在 DetailsPage fullName中,它不如Full Name漂亮。

一些想法,有可能吗?

谢谢

更新::在列表页面中显示来自 sysTables(元数据表)的数据,我已修改<h2 class="DDSubHeader"><%= tableName%></h2>

public string tableName;
protected void Page_Init(object sender, EventArgs e)
{

            table = DynamicDataRouteHandler.GetRequestMetaTable(Context);
            //added by me
            uqsikDataContext sd=new uqsikDataContext();
            tableName = sd.sysTables.Where(n => n.sysTableName == table.DisplayName).FirstOrDefault().TableName;
            //end

            GridView1.SetMetaTable(table, table.GetColumnValuesFromRoute(Context));
            GridDataSource.EntityTypeName = table.EntityType.AssemblyQualifiedName;
            if (table.EntityType != table.RootEntityType)
            {
                GridQueryExtender.Expressions.Add(new OfTypeExpression(table.EntityType));
            }
 }

那么,sysColums 呢?如何从我的sysColumns表中获取数据?

4

2 回答 2

0

总之,是的,这是可能的。但是,我不认为这是一个好主意。您真正在谈论的是在您的数据库中存储演示数据,而实际上最好的放置位置是在您的 aspx 页面本身中。话虽如此,如果您想在数据库中存储数据字典类型信息,我建议使用MS SQL Server 中内置的 、 和 视图,并添加一个名为sys.tables存储sys.columns显示 名称的表和类型。sys.typesObjectDescriptions

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)
 );

然后,您可以根据对象 ID 创建一个视图来检索表的元数据,并直接绑定或动态填充您的 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

编辑:

然后,您可以在 ASP 代码中利用此视图,方法是编写一个包含有关单个表的元数据的类,并在 DAL 中编写一个方法来根据对象或表名检索此类的实例。当您填充页面时,页面可以检索您正在查找的记录以及表格的元数据,并将该元数据绑定到网格标题(在列表视图中)或单个标签的随附文本框记录模式。

于 2010-04-20T18:42:07.367 回答
0

我找到了有用的文章,可以用来解决我的问题

于 2010-05-21T23:21:09.693 回答