NHibernate 可以将 CLR“对象”类型映射到 SQL 类型吗?

Posted

技术标签:

【中文标题】NHibernate 可以将 CLR“对象”类型映射到 SQL 类型吗?【英文标题】:Can NHibernate map an CLR "object" type to a SQL type? 【发布时间】:2013-12-18 03:07:03 【问题描述】:

我正在开发一个消息传递应用程序,该应用程序需要将一些 C# 类型“对象”的参数作为消息的一部分发送。我的后备解决方案是仅序列化对象并将其作为字符串存储在数据库中,并在必要时对其进行反序列化。

我的问题是,使用 NHibernate 在 SQL 中存储“对象”类型的实例的一般策略是什么?

【问题讨论】:

【参考方案1】:

写一个custom IUserType 来处理您的序列化问题。它可以获取您的对象并以您喜欢的任何格式保存它,例如SerializedObjectType nvarchar(max) + SerializedObjectJson nvarchar(max).

请参阅MoneyUserType from NCommon.NHibernate,它保留两列,金额和货币。

【讨论】:

谢谢,这是我采用的解决方案。我不知道通用“对象”类型在 SQL 中是否有等价物。

以上是关于NHibernate 可以将 CLR“对象”类型映射到 SQL 类型吗?的主要内容,如果未能解决你的问题,请参考以下文章

简单映射器模式 C# 代码生成模板

什么是 NHibernate?

无法将NHibernate.Collection.Generic.PersistentGenericBag类型的对象强制转换为List

Datastax Cassandra java 驱动程序 - 对象映射器 - 自动创建表

使用 NHibernate 的示例查询

我应该让我的对象属性为空还是为每种类型使用 CLR 默认值?