NHibernate组件映射VS IUserType

Bla*_*air 5 nhibernate

嗨,我想知道两者之间的区别,为什么要使用一个而不是另一个?

jon*_*nii 2

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

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