流畅的NHIbernate自动化List <string>?

Ale*_*lex 12 nhibernate fluent-nhibernate automapping

流利的NHibernate不喜欢这样,抛出一个错误:

{"关联引用未映射的类:System.String"}

好的,我明白为什么这会导致问题 - 但最好的解决办法是什么?

我真的不希望它在单个字段中存储分隔符的字符串列表,如果我的列表包含许多字符串,这将变得很难看.

由于显而易见的原因,我也不太想要一个表'字符串'.

我想我可以通过将我的List<string>内部包裹在一个类中来解决这个问题,但这感觉有点重量级.我开始认为它是最好的解决方案.

让Fluent NHibernate处理这个问题的最佳方法是什么?

我完全希望这些值存储在另一个表中.我想也许我可能已经能够设置一些指示NHibernate的自动化约定'如果你看到class X包含的那个List<*some primitive type*>,那么继续并自动创建一个映射到这个集合的引用表.

将一个集合中的每个集合包装起来感觉有点沉重.如果这是最好的解决方案,那么就这样吧.

Tom*_*ell 7

几个星期前我有同样的问题,浮点数而不是字符串.

怎么办 - 你 - 自动地图 - listfloat - 或 - 浮动与流利,NHibernate的

事实证明,Automapping不适用于原始类型.

编辑 - 这不再是真的 - 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望使用相同的方法来处理字符串的IList.