标题已经说明了一切。在数据库中,我有遗留数据,其中包含带有空格的文档标题,例如“标题持有者”等。我希望能够使用 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/