nhibernate - List<string> 的流畅 NHIbernate 自动映射?

标签 nhibernate fluent-nhibernate automapping

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/

相关文章:

nhibernate - 如何在不更新整个对象的情况下更新 Fluent NHibernate 中类的特定字段?

c# - Fluent NHibernate - 为现有数据库创建映射

c# - 如何在 fluent nHibernate 中指定 Columntype?

c# - 使用 Fluent nhibernate 配置自动收缩 sqlite 数据库文件

linq - NHibernate.Linq 和 CompareTo 字符串

c# - 不是 nHibernate 标准中的关联 (Asp.Net MVC4)

fluent-nhibernate - Fluent nhibernate 自动映射集合

c# - 自动映射器映射嵌套对象

c# - 使用 NHibernate 和 native SQL 从表中仅选择几列

configuration - 如何使用 Fluent NHibernate 自动映射来映射字典?