Fluent NHibernate 不喜欢这样,抛出错误:
{"Association references unmapped class: System.String"}
好的,我明白为什么这会导致问题 - 但最好的解决方案是什么?
我真的不希望它在单个字段中存储一个分隔的字符串列表,如果我的列表包含许多字符串,这会变得很难看。
出于显而易见的原因,我也真的不想要一个表“字符串”。
我想我可以通过包装我的
List<string>
来解决这个问题一个类里面,不过这个感觉有点重量级。我开始认为它是最好的解决方案。让 Fluent NHibernate 处理这个问题的最佳方法是什么?
我完全希望这些值存储在另一个表中。我想也许我可以设置一些自动映射约定来指示 NHibernate '如果您看到
class X
包含 List<*some primitive type*>
,然后继续并自动创建一个映射到此集合的引用表。把每一个系列都包装在一个类(class)里,感觉有点沉重。但是,如果这是最好的解决方案,那就这样吧。
最佳答案
几周前我遇到了完全相同的问题,使用浮点数而不是字符串。
how-do-you-automap-listfloat-or-float-with-fluent-nhibernate
事实证明,自动映射不适用于原始类型。
编辑 - 这不再是真的 - FNH 团队已经解决了问题
在我的问题的已接受答案中有很多示例代码,但关键是为原始类型列表添加覆盖(下面示例中的“RawY”):
public class DlsAppOverlordExportRunData
{
public virtual int Id { get; set; }
// Note: List<float> needs overrides in order to be mapped by NHibernate.
// See class DlsAppOverlordExportRunDataMap.
public virtual IList<float> RawY { get; set; }
}
// Must be in different namespace from DlsAppOverlordExportRunData!!!
public class DlsAppOverlordExportRunDataMap : IAutoMappingOverride<DlsAppOverlordExportRunData>
{
public void Override(AutoMapping<DlsAppOverlordExportRunData> mapping)
{
// Creates table called "RawY", with primary key
// "DlsAppOverlordExportRunData_Id", and numeric column "Value"
mapping.HasMany(x => x.RawY)
.Element("Value");
}
}
我希望使用相同的方法来处理 ILists 的字符串。
关于nhibernate - List<string> 的流畅 NHIbernate 自动映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1942001/