我有一个名为“竞争”的实体
在比赛中,我有一个属性:
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, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]], mscorlib,版本= 4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089,用于列: NHibernate.Mapping.Formula((来自SELECT的DISTINCT EventCode) tblSomeOtherTable WHERE EventID = [ID]))“}
值得一提的是,tblSomeOtherTable未映射,也不会映射。
我错过了什么?
答案 0 :(得分:1)
尝试更改您的IEnumerable&#39;到&#39; ICollection。&#39;完成后,使用以下规范将Map更改为HasMany:
HasMany(x => x.EventCodes)
.Table("tblSomeOtherTable")
.KeyColumn("EventID")
.Element("DisciplineCode")
.AsSet()
.ReadOnly();
当然,如果另一张桌子实际上没有被称为“tblSomeOtherTable”&#39; (我希望它不是)然后进行修改。
我从未真正使用过&#39;元素&#39;但我认为这应该有用。