在我们的项目中,我们有一个类层次结构:
public abstract class BaseEntity
{
public Guid Id { get; set; }
}
// CREATE TABLE Parent (Id uniqueidentifier)
public class Parent : BaseEntity
{
public ChildA A { get; set; }
public ChildB B { get; set; }
}
// CREATE TABLE Child (Id uniqueidentifier)
public abstract class Child : BaseEntity
{
public Parent Parent { get; set; }
}
// CREATE TABLE ChildA (ChildId uniqueidentifier)
public class ChildA : Child
{
}
// CREATE TABLE ChildB (ChildId uniqueidentifier)
public class ChildB : Child
{
}
我们正在使用NH 3.2“按代码映射”,我想知道映射Parent和ChildA之间关系的正确方法是什么?我最接近的是:
我试过
OneToOne(x =>; x.ChildA,
m =>
{
m.Cascade(Cascade.All);
m.PropertyReference(typeof(ChildA).GetProperty("Parent"));
});
但是会引发异常
Expected a member of ChildA found the member Parent Parent of Child Parameter name: propertyInTheOtherSide
如果我退出PropertyReference行,parent.ChildA会被正确保留,但是当它被读回时,ChildA为空。
任何想法如何映射这个?如果我需要使用HBM,那就这样吧。
我可以在不使用表继承的情况下使用它。