1

「コンペティション」というエンティティがあります

競争では、私はプロパティを持っています:

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、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089、列の場合:NHibernate.Mapping.Formula((SELECT DISTINCT EventCode from tblSomeOtherTable WHERE EventID = [ID])) "}

tblSomeOtherTableはマップされておらず、マップされないことにも言及する価値があります。

私は何を逃しましたか?

4

1 に答える 1

1

「IEnumerable」を「ICollection」に変更してみてください。それが完了したら、次の仕様で Map を HasMany に変更します。

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

もちろん、他のテーブルが実際に 'tblSomeOtherTable' と呼ばれていない場合 (そうでないことを願っています)、その変更も行います。

「Element」を実際に使用したことはありませんが、これでうまくいくと思います。

于 2012-08-09T16:43:08.840 に答える