一個想法是使用SQL Management Objects (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);
}
}
我寫單元測試發電機的數據訪問層這種方式,你可以使用列數據類型補課,如(網上尋找更好的實現 - 在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類型似乎是此應用程序的候選多態數據類型。
從數據庫獲取數據後,您需要如何處理數據?如果你不需要做任何需要輸入的東西,那麼你可以把每一列的內容當作一個字符串。 –
它是SQL Server還是Oracle? –
所以要清楚:你的數據庫模式變化比你的代碼部署更經常?如果是這樣,那是一個......不幸的情況。 –