【问题标题】:Fluent NHibernate: Example of a one-to-many relationship on an abstract class of a table-per-subclass implementation流利的 NHibernate:在每个子类实现的表的抽象类上的一对多关系示例
【发布时间】:2010-06-14 15:28:23
【问题描述】:

多年来,我一直在尝试找到一个示例(因为我自己无法让它工作),以正确映射每个子类实现的表的抽象类上的一对多关系, 在流利的 nHibernate 中。

以下示例:我希望将 Debt 抽象基类上的 Fines 列表映射到 Fine 类。

如果有人知道他们之前遇到过的任何教程或示例,请告诉我。

public abstract class Entity
{
    public int Id { get; set; }
}

public abstract class Debt : Entity
{        
    public decimal Balance { get; set; }

    public IList<Fine> Fines { get; set; }

    public Debt()
    {
        Fines = new List<Fine>();
    }

}

public class CarLoan : Debt
{

}

public class CreditCard : Debt
{

}

public class LoanApplication : Entity
{
    public IList<Debt> ExistingDebts { get; set; }

    public LoanApplication()
    {
        ExistingDebts = new List<Debt>();
    }
}

public class Fine
{
    public Int64 Cash { get; set; }
}

【问题讨论】:

    标签: nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    你能告诉我们你到底在哪里遇到困难吗?你试过什么?

    显然,您需要将所有成员声明为虚拟成员(我认为这是示例中的疏忽)。

    不过,它基本上看起来像这样:

    public DebtMap : ClassMap<Debt>
    {
        public DebtMap()
        {
            Id(x => x.Id);
            HasMany(x => x.Fines);
        }
    }
    
    public FineMap : ClassMap<Fine>
    {
        public FineMap()
        {
            Id(x => x.Id);
            // map other members
        }
    }
    
    public CarLoanMap : SubclassMap<CarLoan> { }
    public CreditCardMap : SubclassMap<CreditCard> { }
    

    【讨论】:

    • 感谢您的帮助,但我真的只是在寻找可以看到它工作的示例/教程。以上只是我想要做的一个人为的例子。这是用于工作的,是一项相当复杂的工作,除了抽象基础上的一对多(所有虚拟都在那里等)之外,所有工作都很好。我们正在使用自动映射器并在必要时覆盖。因此,试图准确地解释我们在配置、映射覆盖等方面所做的工作会让这些事情难以理解。这就是为什么我只是想知道是否有人知道任何示例等。蒂姆
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多