NHibernate成分映射与IUserType

NHibernate成分映射与IUserType,nhibernate,Nhibernate,您好,我想知道两者之间的区别,为什么要使用一个而不是另一个,以及何时使用?您的对象模型不一定要将一对一映射到您的数据库模型,并且在大多数情况下会更丰富。组件是通过在对象模型中封装功能来丰富数据库模型的一种方法。例如,假设您有两个表,人员和公司。这两个表都有地址所需的字段,但数据库架构(无论出于何种原因)没有第三个地址表。在应用程序中,您可能希望将地址建模为一个单独的实体,即使它没有逻辑数据库表。在这里,您将使用一个组件,它允许您为一个地址投影数据库字段 IUserType是一种使用自定义序列化将

您好,我想知道两者之间的区别,为什么要使用一个而不是另一个,以及何时使用?

您的对象模型不一定要将一对一映射到您的数据库模型,并且在大多数情况下会更丰富。组件是通过在对象模型中封装功能来丰富数据库模型的一种方法。例如,假设您有两个表,
人员
公司
。这两个表都有
地址
所需的字段,但数据库架构(无论出于何种原因)没有第三个
地址
表。在应用程序中,您可能希望将地址建模为一个单独的实体,即使它没有逻辑数据库表。在这里,您将使用一个组件,它允许您为一个地址投影数据库字段

IUserType
是一种使用自定义序列化将类型映射到列的方法。例如,如果要映射mongodb
ObjectId
(它只不过是一个guid),则可以编写一个自定义的
IUserType
来进行映射。其他示例可能是将位掩码映射到富用户类型数组,或者对加密字段进行编码/解码