1 つのアイデアは、SQL 管理オブジェクト (SMO)をテーブルと共に使用して、強力な型を動的に作成することです。
Server srv = new Server(conn);
Database db = srv.Databases["AdventureWorks"];
foreach (Table table in db.Tables)
{
Console.WriteLine(" " + table.Name);
foreach (Column col in table.Columns)
{
Console.WriteLine(" " + col.Name + " " + col.DataType.Name);
}
}
この方法でデータ アクセス レイヤーの単体テスト ジェネレーターを作成しました。たとえば、DataTypes 列を使用してクラスを作成できます (より良い実装については、オンラインで C# を参照してください)。
Public Function SQLParameterType(ByVal ParameterDataType As String) As String
ParameterDataType = ParameterDataType.ToUpper
If ParameterDataType.IndexOf("NVARCHAR") > 0 Then
Return "string"
ElseIf ParameterDataType.IndexOf("VARCHAR") > 0 Then
Return "string"
End If
Select Case ParameterDataType
Case Is = "BIGINT"
Return "Int64"
Case Is = "INT"
Return "Int32"
Case Is = "SMALLINT"
Return "Int16"
Case Is = "BIT"
If gIsVBdotNet Then
Return "boolean"
Else
Return "bool"
End If
Case Is = "DATETIME"
Return "DateTime"
Case Is = "DATETIME2"
Return "DateTime"
Case Is = "SMALLDATETIME"
Return "DateTime"
Case Is = "MONEY"
Return "single" 'float
Case Is = "FLOAT"
Return "single" 'float
Case Is = "REAL"
Return "double"
'Case Is = "INT"
' Return "int32"
'Case Is = "INT"
' Return "int32"
Case Else
Return "666"
End Select
End Function
スキーマに依存しない方法でデータベースに接続するこの単純な ORM を使用すると、動的に生成されたクラスを dB に疎結合できます。.Net 4の新しいDynamic型は、このアプリケーションのポリモーフィック データ型の候補として適しているようです。