出于某种原因,我无法附上 DB 对象的类图,但尝试从下面的表结构中获取该 idiea。
从最终用户的角度来看,他/她将查看 UI 上的字段名称列表。然后将它们中的一些拉到 UI 上的某个独特位置以指示它们在一起。这将形成一个新的数据库。我们看待它的另一种方式是,它只不过是桌子。我参与了一个项目,我们试图通过读取表定义来通过 C# 代码动态生成 CRUD。如果您查看下图,这可能会消除一些疑问。基本上我们需要存储一些元数据表,代码可以使用它来构建 CRUD。下面是您可以开始使用的示例数据库对象。根据您想要的复杂程度和复杂程度,您可以为其添加更多功能。
    DECLARE @_DBField TABLE
    (
        ID      INT IDENTITY NOT NULL
        ,NAME   sysname NOT NULL
    )
    DECLARE @_FieldDataTypeID TABLE
    (
        DataTypeID      INT IDENTITY NOT NULL
        ,SqlDataType    sysname NOT NULL
        ,DisplayName    sysname NOT NULL
    )
    DECLARE @_DB TABLE
    (
        ID          INT NOT NULL
        ,DBName     sysname NOT NULL
        ,FieldID    INT NOT NULL
        ,DataTypeID INT NOT NULL
        ,IsPartofPK BIT NOT NULL DEFAULT 0
    )
    INSERT INTO @_DBField( NAME )   
    SELECT 'FName' 
    UNION ALL   SELECT 'LName' 
    UNION ALL   SELECT 'MName'
    INSERT INTO @_FieldDataTypeID( SqlDataType ,DisplayName)
                SELECT 'NVARCHAR(50)'       ,'Short-String; Alphanumeric value'
    UNION ALL   SELECT 'NVARCHAR(200)'      ,'Midium-String; Alphanumeric value'
    UNION ALL   SELECT 'NVARCHAR(500)'      ,'Long-String; Alphanumeric value'
    UNION ALL   SELECT 'NVARCHAR(MAX)'      ,'Max-String; Alphanumeric value'
    UNION ALL   SELECT 'INT'                ,'Small-Integer; Integer Value'
    UNION ALL   SELECT 'BIT'                ,'0 or 1; Boolean Value'
    INSERT INTO @_DB( ID ,DBName ,FieldID ,DataTypeID ,IsPartofPK )
                SELECT 1,'Student_Name',1,1,1
    UNION ALL   SELECT 1,'Student_Name',2,1,1
    UNION ALL   SELECT 1,'Student_Name',3,1,0
    SELECT * FROM @_DB