何らかの理由で、DBオブジェクトのクラス図を添付できませんが、テーブル構造の下からそのアイデアを取得しようとしています。
エンド ユーザーの観点からは、UI のフィールド名のリストを確認します。そして、それらのいくつかを UI の特定の場所に引っ張って、それらが一緒であることを示します。これにより、新しいDBが形成されます。別の見方をすれば、それはテーブルに他なりません。私は、テーブル定義を読み取って C# コードを使用して CRUD を動的に生成しようとするプロジェクトに取り組みました。下の図を見ると、疑問が解消されるかもしれません。基本的に、いくつかのメタデータ テーブルを格納する必要があり、コードはそれを使用して CRUD を作成できます。以下は、開始できるサンプル DB オブジェクトです。必要とする複雑で洗練されたデザインに応じて、さらに機能を追加できます。
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