[英]Mapping CLR Parameter Data
我正在編寫存儲過程生成器,並且需要將CLR類型映射到其SQL Server類型。
MSDN在以下位置列出了類型映射: http : //msdn.microsoft.com/zh-cn/library/ms131092.aspx,但是我不想使用大的switch語句來處理映射。
是否有一種簡單的方法可以使用System.Data.SqlTypes使用的任何過程以字符串形式檢索SQL Server類型?
我想要這樣的方法簽名:
static string GetSqlType(Type clrType)
{
...
return sqlType;
}
因此,給出以下調用:
string sqlType = GetSqlType(1.GetType());
sqlType應該包含:“ int”。
這變得相當復雜,因為它取決於您希望定位的SQL Server版本。
這是有關SQL Server 在復制方案中如何處理數據類型的指南
SQL Server Compact Edition不支持varchar(max)和varbinary(max)列類型(您只能使用顯式的〜4K長度的列),這進一步加劇了混亂。
在某些時候,您還需要對具有多種選擇的區域做出啟發式決策。
考慮到所有這些,在實用程序函數中使用漂亮的簡單switch語句將使生活比嘗試依賴某些僅用於類型轉換而不是文本sql創建的不透明BCL庫要容易得多。
它還通過默認的throw或默認的varchar(max)來明確表示“未定義”的行為將由您控制。
從形式的方法返回一個簡單的不可變類:
public sealed class SqlServerTypeDescription
{
// for sql text construction
public readonly string SqlServerName;
// for code construction
public readonly SqlDbType SqlDbType;
// for code construction
public readonly Type ClrType;
// constructor etc.
}
您可能也想添加可選的精度/尺寸值,盡管這可能是您選擇留給用戶的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.