出于某种原因,我无法附上 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