c# - 是否可以使用 FluentNHibernate 将具有空格的 varchar 映射到枚举

标签 c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

标题已经说明了一切。在数据库中,我有遗留数据,其中包含带有空格的文档标题,例如“标题持有者”等。我希望能够使用 Fluent NHibernate 将它们直接映射到枚举,但我遇到了解析错误。我找不到任何可以使用的自定义转换器的指示,有人可以提出任何建议吗?

我的映射如下所示。

Map(x => x.DocumentName).Nullable().CustomSqlType("varchar(50)");

最佳答案

您将需要实现自己的 NHibernate IUserType,并且大部分逻辑将位于 NullSafeGet() 和 NullSafeSet() 方法中。

您还需要创建自己的内部枚举到字符串的映射。您可以使用一个字典,将字符串作为键,将枚举值作为值,因此您的逻辑基本上围绕在该字典中查找值以从字符串转换为枚举,反之亦然。另一种选择可能是使用属性用其名称的字符串版本来装饰每个枚举值,然后在运行时通过反射进行转换...

以下是创建自定义 IUserType 的一些示例:(下面的第一个链接应该确实为您指明了正确的方向)

关于c# - 是否可以使用 FluentNHibernate 将具有空格的 varchar 映射到枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455244/

相关文章:

c# - 使用 Jquery Mobile 启用/禁用 JQuery 复选框

nhibernate - MVC 项目提示找不到 Nhibernate.dll 版本 2.1.0.4000

c# - Fluent NHibernate 自动映射基类覆盖

c# - 具有相同主键的 FluentNHibernate 映射

c# - Fluent nHibernate - 如何选择没有时间的 DISTINCT 日期?

c# - Fluent NHibernate 返回具有多对多映射的重复项

c# - C# 中 StringToInt 函数的最佳解决方案

c# - 为单个任务创建多个线程

NHibernate iStatelessSession 在急切获取时返回重复的父实例

c# - 当在表单上的某处单击按钮时,wpf 编辑列表框中的项目