基本的值类型大致可以粗糙的分为三组: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 |
不用在映射文件指定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 -
一个字符,'T' 或者'F'
|
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)的System.Object .
|
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类型,这是最后可依靠的类型。
|
|
|