次のチケットクラスがあります:
public class Ticket {
public virtual int Id { get; set; }
public virtual Type Type { get; set; }
public virtual Status Status { get; set; }
public virtual State State { get; set; }
}
これは、次のマッピングでレガシー データベースのテーブルにマップされます。
public TicketMap()
{
Table("TICKET");
LazyLoad();
Id(x => x.Id)
.GeneratedBy.TriggerIdentity()
.Column("ID")
.Access.Property()
.Not.Nullable();
References(x => x.Type)
.Class<Type>()
.Cascade.None()
.LazyLoad()
.Columns("TYPE_ID");
References(x => x.Status)
.Class<Status>()
.Cascade.None()
.Columns("STATUS_ID", "TYPE_ID");
References(x => x.State)
.Class<State>()
.Cascade.None()
.LazyLoad()
.Columns("STATE_ID", "TYPE_ID");
}
問題は、状態とステータスを含むチケットを保存しようとすると、NHibernate が使用する TYPE_ID を認識せず、エンティティの保存に失敗することです。
State クラスと Status クラスの両方に複合キーがあります (これが悪い習慣であることはわかっていますが、前述のように、これはレガシー データベースであり、代理キーを作成することはできません)。
この参照を機能させる方法はありますか?