我有以下票务类:
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 类都有复合键(我知道这是一种不好的做法,但如上所述,它是旧数据库,我无法创建代理键)。
我有办法让这个参考工作吗?