我有一个 SQL 数据库和一个具有相同架构的 Oracle 数据库。
因此我想对这两个数据库使用我的模型类,我要做的就是更改 Fluent NHibernate 配置中的数据库连接字符串。
我有一些用于列的数据库 char 数据类型,但在我的模型类中,我将它们设置为字符串,但是当它们从查询返回时,它们填充了空格。
当我使用这些列查询数据库时,如何在不引起问题的情况下返回它们,因为它们需要匹配固定长度规范。
最佳答案
您可以创建 NHibernate.UserTypes.IUserType
的实现这将在从数据库中获取时修剪空白并在返回数据库时重新填充它。
在您的流畅映射中,您只需添加 .CustomType<T>
其中 T
是你的 IUserType
实现。
This article有助于正确实现 IUserType
.不要沉迷于 Assemble
这样的方法, Disassemble
, DeepCopy
, Replace
- 看起来你甚至都不会打那些。您最关心的NullSafeGet
,您将在其中修剪,并且 NullSafeSet
您将在其中重新填充。
更新
经过进一步考虑,我不确定您是否真的需要在插入数据库时重新填充值——数据库本身将强制列的固定长度。
针对您在评论中提供的链接,我认为该实现几乎可以帮助您实现目标,但我确实认为您可能需要对其进行一些修改。一方面,您可能不想同时删除前导和尾随空格,如 Trim()
会做。另一方面,在您对 Equals
的覆盖中, 你会想要
value
等于
value
关于c# - 如何在 Fluent NHibernate 中从数据库 char 数据类型中修剪字符串属性数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651922/