流畅的NHIbernate列表列表自动化?

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

{“Association references unmapped class: System.String”}

好的,我可以看到为什么会导致一个问题 – 但是最好的解决方案是什么?

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

我也不希望有一个表’string’,原因很明显.

我想我可以通过包装我的List< string>在一个课堂里,但这感觉有点重.我开始认为它最好的解决方案.

流利的NHibernate来处理这个问题的最好方法是什么?

我完全期望这些值存储在另一个表中.我想也许,我可能已经能够设置一些指令NHibernate的自动化约定如果你看到一个包含List< *一些原始类型*>的类X,然后自动创建一个映射到这个集合的引用表.

感觉有点沉重,去包装每个单一的集合在一个类.如果这是最好的解决方案,那么就这样.

几个星期后我有这个完全相同的问题,有浮标而不是字符串.

how-do-you-automap-listfloat-or-float-with-fluent-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");
    }
}

我期望与IList的字符串一样的方法.

翻译自:https://stackoverflow.com/questions/1942001/fluent-nhibernate-automapping-of-liststring

转载注明原文:流畅的NHIbernate列表列表自动化?