問題描述:當(dāng)數(shù)據(jù)庫列類型有Money類型的時候,CodeSmith生成數(shù)據(jù)訪問層會出錯。有不能識別的類型。解決方法:通過查找資料得知,數(shù)據(jù)庫中的Money類型在DbType中是Currency(貨幣類型),在C#中對應(yīng)SqlDbType.Decimal。①在public string GetCSharpVariableType2(ColumnSchema column){if (column.Name.EndsWith("TypeCode")) return column.Name;switch (column.DataType){case DbType.AnsiString: return "SqlDbType.VarChar";case DbType.AnsiStringFixedLength: return "SqlDbType.VarChar";case DbType.Binary: return "SqlDbType.Binary";case DbType.Boolean: return "SqlDbType.Bit";case DbType.Date: return "SqlDbType.DateTime";case DbType.DateTime: return "SqlDbType.DateTime";case DbType.Decimal: return "SqlDbType.Decimal";case DbType.Double: return "SqlDbType.Decimal";case DbType.Int16: return "SqlDbType.Int";case DbType.Int32: return "SqlDbType.Int";case DbType.Int64: return "SqlDbType.Float";case DbType.String: return "SqlDbType.VarChar";case DbType.StringFixedLength: return "SqlDbType.NChar";case DbType.Currency: return "SqlDbType.Decimal";default:{return "__UNKNOWN__" + column.NativeType;}}}中查找case DbType.Currency: return "SqlDbType.Decimal";若沒有,就加上;有則不管。②在public string GetCode(ColumnSchema column)方法中,查找case DbType.Decimal:case DbType.Currency:case DbType.Double:{sb.Append(" if (dr.Table.Columns.Contains(/""+column.Name+"/") && !dr.IsNull(/""+column.Name+"/"))/r/n");sb.Append(" {/r/n");sb.Append(" model."+Get
新聞熱點
疑難解答