IList<int> 的流畅 NHibernate 映射?

Posted

技术标签:

【中文标题】IList<int> 的流畅 NHibernate 映射?【英文标题】:Fluent NHibernate mapping for IList<int>? 【发布时间】:2016-05-11 19:24:08 【问题描述】:

我正在使用 Fluent NHibernate 2.0.3 和 NHibernate 4.0.0.4000 后端数据库是 Sqlite。

我的实体和映射是这样定义的:

public class PriceHistory

    public virtual int ID  get; set; 
    public virtual IList<long> Date  get; set; 
    public virtual IList<float> Price  get; set; 
    public virtual IList<int> Volume  get; set; 
    public virtual float MinPrice  get; set; 
    public virtual float MaxPrice  get; set; 


class PriceHistoryMap : ClassMap<PriceHistory>

    public PriceHistoryMap()
    
        Table("PriceHistories");
        Id(x => x.ID);
        HasMany<long>(x => x.Date);
        HasMany<float>(x => x.Price);
        HasMany<int>(x => x.Volume);
        Map(x => x.MinPrice);
        Map(x => x.MaxPrice);
       

当我尝试启动应用程序时,出现以下异常:

Association references unmapped class: System.Int64

我有 int、long 还是 float 都没关系。我总是遇到异常,好像我必须为每个基本值类型定义映射。

这里有什么问题?值类型列表的正确映射是什么?

【问题讨论】:

【参考方案1】:

我相信您可能必须将其命名为HasMany&lt;int&gt;(x =&gt; x.Volume).Element("Value");

这个post 也可能对您的问题有所帮助

【讨论】:

【参考方案2】:

我不确定,但听起来您的浮点数、整数和长整数位于不同的表中?

如果是这种情况,您可能必须为每个人设置HasMany 关系,如下所示:

HasMany<int>(x => x.Volume)
    .Table("PriceHistoryVolumes")
    .KeyColumn("PriceHistoryID")
    .Element("Volume");

【讨论】:

以上是关于IList<int> 的流畅 NHibernate 映射?的主要内容,如果未能解决你的问题,请参考以下文章

IList<T> 到 IQueryable<T>

leetcode39

leetcode582

leetcode554

leetcode216

leetcode118