基本值类型(Basic value types)
基本的值类型大致可以粗糙的分为三组:System.ValueType
类型,System.Object
类型和支持大对象的System.Object
类型.和.NET类型一样,System.ValueType对应的列不能存储null
值,而System.Object可以.
表4.3 System.ValueType 映射类型
NHibernate 类型 | .NET 类型 | Database 类型 | 备注 |
---|---|---|---|
Boolean | System.Boolean | DbType.Boolean | 在没有指定类型(type ) 属性时的默认值 |
Byte | System.Byte | DbType.Byte | 在没有指定类型(type ) 属性时的默认值 |
Char | System.Char | DbType.StringFixedLength - 1 char | 在没有指定类型(type ) 属性时的默认值 |
DateTime | System.DateTime | DbType.DateTime -忽略毫秒 | 在没有指定类型(type ) 属性时的默认值 |
Decimal | System.Decimal | DbType.Decimal | 在没有指定类型(type ) 属性时的默认值 |
Double | System.Double | DbType.Double | 在没有指定类型(type ) 属性时的默认值 |
Guid | System.Guid | DbType.Guid | 在没有指定类型(type ) 属性时的默认值 |
Int16 | System.Int16 | DbType.Int16 | 在没有指定类型(type ) 属性时的默认值 |
Int32 | System.Int32 | DbType.Int32 | 在没有指定类型(type ) 属性时的默认值 |
Int64 | System.Int64 | DbType.Int64 | 在没有指定类型(type ) 属性时的默认值 |
PersistentEnum | 一个 System.Enum | 潜在类型对应的DbType | 不用在映射文件指定 |
Single | System.Single | DbType.Single | 在没有指定类型(type ) 属性时的默认值 |
Ticks | System.DateTime | DbType.Int64 | type="Ticks" 必须被指定 |
TimeSpan | System.TimeSpan | DbType.Int64 | 在没有指定类型(type ) 属性时的默认值 |
Timestamp | System.DateTime | DbType.DateTime - 取决于数据库支持 | type="Timestamp" 必须被指定 |
TrueFalse | System.Boolean |
| type="TrueFalse" 必须被指定 |
YesNo | System.Boolean | DbType.AnsiStringFixedLength - 一个字符,'Y' 或者'N' | type="YesNo" 必须被指定 |
表4.4 System.Object 映射类型
NHibernate 类型 | .NET 类型 | Database 类型 | 备注 |
---|---|---|---|
AnsiString | System.String | DbType.AnsiString | type="AnsiString" 必须被指定 |
CultureInfo | System.Globalization.CultureInfo | DbType.String - 表明文化(culture)的5个字符 | 在没有指定类型(type ) 属性时的默认值 |
Binary | System.Byte[] | DbType.Binary | 在没有指定类型(type ) 属性时的默认值 |
Type | System.Type | DbType.String 容纳程序集全名 | 在没有指定类型(type ) 属性时的默认值 |
String | System.String | DbType.String | 在没有指定类型(type ) 属性时的默认值 |
表4.5 Large Object 映射类型
NHibernate 类型 | .NET 类型 | Database 类型 | 备注 |
---|---|---|---|
StringClob | System.String | DbType.String | type="StringClob" 必须被指定.整个字段被读入内存 |
BinaryBlob | System.Byte[] | DbType.Binary | type="BinaryBlob" 必须被指定. 整个字段被读入内存 |
Serializable | 任何被标记了可序列化属性(SerializableAttribute)的 | DbType.Binary | type="Serializable" 应该被指定. 如果不能为属性找到NHibernate类型,这是最后可依靠的类型。 |
要掌握NHibernate或者使用某种工具生成NHibernate的hbm.xml文件,应该了解这是一个NHibernate类型名的完整的层。type="integer"
被映射为Int32
NHibernateType,type="short"
被映射为Int16
NHibernateType.查看所有的转换你可以查看NHibernate.Type.TypeFactory
类的静态构造函数.
三、NHibernate的类型
3.1 值类型映射表
NHibernate类型 | .NET类型 | Database类型 | 备注 |
AnsiChar | System.Char | DbType.AnsiStringFixedLength - 1 char |
|
Boolean | System.Boolean | DbType.Boolean | 在没有指定类型(type) 属性时的默认值。 |
Byte | System.Byte | DbType.Byte | 在没有指定类型(type) 属性时的默认值。 |
Char | System.Char | DbType.StringFixedLength - 1 char | 在没有指定类型(type) 属性时的默认值。 |
DateTime | System.DateTime | DbType.DateTime - ignores the milliseconds | 在没有指定类型(type) 属性时的默认值。 |
Decimal | System.Decimal | DbType.Decimal | 在没有指定类型(type) 属性时的默认值。 |
Double | System.Double | DbType.Double | 在没有指定类型(type) 属性时的默认值。 |
Guid | System.Guid | DbType.Guid | 在没有指定类型(type) 属性时的默认值。 |
Int16 | System.Int16 | DbType.Int16 | 在没有指定类型(type) 属性时的默认值。 |
Int32 | System.Int32 | DbType.Int32 | 在没有指定类型(type) 属性时的默认值。 |
Int64 | System.Int64 | DbType.Int64 | 在没有指定类型(type) 属性时的默认值。 |
PersistentEnum | System.Enum | 潜在类型对应的DbType | 不用在映射文件指定type="PersistentEnum".而是提供枚举的程序集全名, 让NHibernate用反射来猜测类型。枚举使用的潜在类型决定适当的DbType.。 |
Single | System.Single | DbType.Single | 在没有指定类型(type) 属性时的默认值。 |
Ticks | System.DateTime | DbType.Int64 | type="Ticks"必须被指定。 |
TimeSpan | System.TimeSpan | DbType.Int64 | 在没有指定类型(type) 属性时的默认值。 |
Timestamp | System.DateTime | DbType.DateTime - 取决于数据库支持 | type="Timestamp"必须被指定。 |
TrueFalse | System.Boolean | DbType.AnsiStringFixedLength -一个字符,'Y' 或者'N' | type="TrueFalse"必须被指定。 |
YesNo | System.Boolean | DbType.AnsiStringFixedLength -一个字符,'Y' 或者'N' | type="YesNo"必须被指定。 |
3.2 应用类型映射表
NHibernate Type | .NET Type | Database Type | Remarks |
AnsiString | System.String | DbType.AnsiString | type="AnsiString"必须被指定。 |
CultureInfo | System.Globalization.CultureInfo | DbType.String - 表明文化(culture)的5个字符 | 在没有指定类型(type) 属性时的默认值。 |
Binary | System.Byte[] | DbType.Binary | 在没有指定类型(type) 属性时的默认值。 |
Type | System.Type | DbType.String 保存应用程序集权限定名。 | 在没有指定类型(type) 属性时的默认值。 |
String | System.String | DbType.String | 在没有指定类型(type) 属性时的默认值。 |
3.3 二进制类型映射表
NHibernate Type | .NET Type | Database Type | Remarks |
StringClob | System.String | DbType.String | type="StringClob"必须被指定。 整个字段在内存里可读。 |
BinaryBlob | System.Byte[] | DbType.Binary | type="BinaryBlob"必须被指定。 整个字段在内存里可读。 |
Serializable | Any System.Object 必须标注可序列化标签 | DbType.Binary | type="Serializable"应该被指定. 如果不能为属性找到NHibernate类型,这是最后可依靠的类型。 |