2

主キーまたは複合キーが指定されていない Automap 読み取り専用ビューに Fluent Nhibernate を取得しようとしています。ClassMap の API ドキュメントが Id() のデフォルトのコンストラクターを公開しているため、可能のようです。

http://fluentnhibernate.org/api/FluentNHibernate.Mapping/ClassMap%601.htm

それは言う

IdentityPart Id() ドメイン オブジェクトまたはデータベース内の列に対応するプロパティを持たない Id を作成します。これは主に、読み取り専用アクセスおよび/またはビューで使用するためのものです。デフォルトは、「インクリメント」ジェネレーターを使用した int ID です。

ビューに対応するエンティティのマッピングをオーバーライドしようとしましたが、Id フィールド名を指定する主キー規則を削除しました。idそのような列がないために失敗するビューのクエリに列を追加します。

これを行うためのより良い方法があるはずだと思うので、ビューで偽の主キーを取り除こうとしています。

これが私が使用しているオーバーライドスニペットです

public class PersonMap: IAutoMappingOverride<Person>
{
    public void Override(AutoMapping<Person> mapping)
    {
        mapping.Id();
    }
}

なぜこれが機能しないのですか?

4

1 に答える 1

1

これを回避する方法は、通常、任意のプロパティをidに割り当て、そのプロパティをassignedによって生成することです。これは基本的にマップを実行するのと同じです。

public class ItemViewMap : IAutoMappingOverride<ItemView>
{
    public void Override(AutoMapping<ItemView> mapping)
    {
        mapping.Id(x => x.Column).GeneratedBy.Assigned();
    }
}
于 2012-01-25T17:57:57.927 に答える