Прочитав ответы здесь, мне удалось заставить его работать.
Я просто добавлю этот пример, потому что я использую отношение «один к одному» с Constrained = False и потому что это пример отображения кода
Два класса:
public class Pedido:BaseModel
{
public virtual BuscaBase Busca { get; set; }
}
public class BuscaBase : BaseModel
{
public virtual Pedido Pedido { get; set; }
}
Отображения:
public class PedidoMap : ClassMapping<Pedido>
{
public PedidoMap()
{
Id(x => x.Id, x => x.Generator(Generators.Identity));
ManyToOne(x => x.Busca, m =>
{
m.Cascade(Cascade.DeleteOrphans);
m.NotNullable(true); m.Unique(true);
m.Class(typeof(BuscaBase));
});
}
}
public class BuscaBaseMap : ClassMapping<BuscaBase>
{
public BuscaBaseMap()
{
Id(x => x.Id, x => x.Generator(Generators.Sequence, g => g.Params(new { sequence = "buscaefetuada_id_seq" })));
OneToOne(x => x.Pedido, m =>
{
m.Lazy(LazyRelation.NoProxy);
m.Constrained(false);
m.Cascade(Cascade.None);
m.Class(typeof(Pedido));
});
}
}
Примечание: я использовал для однозначного сопоставления m.PropertyReference(typeof(Pedido).GetProperty("Busca"));
, но это не работает для отложенной загрузки. Вы должны указать отношение, используя класс
Небольшое краткое описание Constrained = False, используемого здесь, объект "Pedido" может не существовать в объекте "BuscaBase".