使用公式映射 IE可枚举的字符串



我有一个实体,叫做"竞争"

在比赛中,我有一个属性:

IEnumerable<string> EventCodes {get;set;}

我正在尝试做的是映射时进行子选择我的映射文件摘录:

public CompetitionMap()
{
    Id(x => x.Id);
    Map(x => x.DisciplineCodes)
        .Formula("(SELECT DISTINCT DisciplineCode 
            from tblSomeOtherTable WHERE EventID = [ID])");
    Table("tblCompetitions");
}

但是,这会引发此错误:

{"无法确定以下对象的类型: System.Collections.Generic.IEnumerable'1[[System.String, mscorlib, 版本=4.0.0.0, 区域性=中性, 公钥令牌=b77a5c561934e089]], mscorlib, 版本=4.0.0.0, 区域性=中性, PublicKeyToken=b77a5c561934e089,对于列: NHibernate.Mapping.Formula( (SELECT DISTINCT EventCode from tblSomeOtherTable WHERE EventID = [ID]) )"}

值得一提的是,tblSomeOtherTable 没有被映射,也不会被映射。

我错过了什么?

尝试将"IEnumerable"更改为"ICollection"。 完成此操作后,将地图更改为具有以下规范的 HasMany:

HasMany(x => x.EventCodes)
            .Table("tblSomeOtherTable")
            .KeyColumn("EventID")
            .Element("DisciplineCode")
            .AsSet()
            .ReadOnly();

当然,如果另一个表实际上没有被称为"tblSomeOtherTable"(我希望它不是),那么也进行修改。

我从未真正使用过"元素",但我认为这应该有效。

最新更新