如何在Fluent NHibernate中修剪数据库char数据类型的字符串属性数据类型

Jon*_*Jon 2 .net c# nhibernate orm fluent-nhibernate

我有一个SQL数据库和一个具有相同模式的Oracle数据库.

因此,我想将我的模型类用于两个数据库,我将要做的就是更改Fluent NHibernate配置中的数据库连接字符串.

我有一些列的数据库字符数据类型,但在我的模型类中,我将它们设置为字符串,但是当它们从查询返回时,它们填充了空格.

当我使用这些列查询数据库时,如何在不引起问题的情况下返回它们,因为它们需要匹配固定长度规范.

Jay*_*Jay 5

您可以创建一个实现,NHibernate.UserTypes.IUserType在从数据库中获取时修剪空白,并在返回数据库时重新填充它.

在你的流利的映射,你只需要添加.CustomType<T>哪里T是你IUserType实现.

本文有助于正确实现IUserType.不要让挂了类似的方法Assemble,Disassemble,DeepCopy,Replace-它看起来并不像你永远打的,甚至.你最关心的是NullSafeGet,你将在其中修剪,并NullSafeSet在其中重新填充.

更新

经过进一步考虑,我不确定在插入数据库时​​你实际上是否需要重新填充值 - 数据库本身将强制执行列的固定长度.

为了回应您在评论中提供的链接,我认为实现几乎可以帮助您,但我认为您可能需要对其进行一些修改.首先,你可能不想修剪前导空格和尾随空格Trim().另一方面,在你的覆盖中Equals,你会想要的

     value
Run Code Online (Sandbox Code Playgroud)

平等