具有表继承的NHibernate一对一单向映射

时间:2012-06-01 07:45:40

标签: nhibernate mapping-by-code

在我们的项目中,我们有一个类层次结构:

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,那就这样吧。

我可以在不使用表继承的情况下使用它。

0 个答案:

没有答案