2.在映射文件的中需要映射数据类型,数据库中的类型和.NET类型的对应关系如下:
| DbType | .NET Type |
|---|---|
| Binary | byte[] |
| Boolean | bool |
| Byte | byte |
| Currency | decimal |
| Decimal | decimal |
| VarNumeric | decimal |
| Date | DateTime |
| DateTime | DateTime |
| Time | DateTime |
| Double | double |
| Guid | Guid |
| Int16 | short |
| Int32 | int |
| Int64 | long |
| Object | object |
| SByte | sbyte |
| Single | float |
| String | string |
| StringFixedLength | string |
| AnsiString | string |
| AnsiStringFixedLength | string |
| UInt16 | ushort |
| UInt32 | uint |
| UInt64 | ulong |
如果使用String,可以限定长度,如:String(20);如果使用Decimal也可以限定长度,如: Decimal(8, 2)
3.版本0.4nhibernate存在bug,可能会出现在使用Decimal的时候出现异常,是因为NHibernate.Driver.DriverBase类的Bug导致的,需要把GenerateParameter函数改成如下所示:
protected virtual IDbDataParameter GenerateParameter(IDbCommand command, string name, Parameter parameter, Dialect.Dialect dialect)
{
IDbDataParameter dbParam = command.CreateParameter();
dbParam.DbType = parameter.SqlType.DbType;
if (parameter.SqlType.LengthDefined)
dbParam.Size = parameter.SqlType.Length;
if (parameter.SqlType.PrecisionDefined)
{
dbParam.Precision = parameter.SqlType.Precision;
dbParam.Scale = parameter.SqlType.Scale;
}
dbParam.ParameterName = this.FormatNameForParameter(name);
return dbParam;
}

浙公网安备 33010602011771号