【问题标题】:Objects in derived class reference base class in database, instead of derived class派生类中的对象引用数据库中的基类,而不是派生类
【发布时间】:2012-06-01 05:16:00
【问题描述】:

(当我说一条记录“有”另一条记录时,我的意思是另一条记录引用了第一条记录)。

我有以下数据库关系:

表格

BaseAnswer -> MultipleChoiceAnswer -> MultipleChoiceAnswerCulture

BaseAnswer 记录可以有 MultipleChoiceAnswer 记录。对于每个“MultipleChoiceAnswer”,都有多个“Culture”记录:

记录

英文标题

法语标题

MultipleChoiceAnswer 记录有一列引用 BaseAnswer 的主键,同样,MultipleChoiceAnswerCulture 中的记录有一列应该引用 MultipleChoiceAnswer 的主键。但是,我的问题是插入到 MultipleChoiceAnswerCulture 的记录是指 BaseAnswer 的主键(根父级,而不是直接父级)。这是我的代码:

public class MultipleChoiceAnswerMap : SubclassMap<MultipleChoiceAnswer>
{
    public MultipleChoiceAnswerMap() 
    {            
        Table("MultipleChoiceAnswer");
        KeyColumn("BaseAnswerID");
        Map(x => x.Score);

        HasMany(x => x.Resources)
            .CollectionType<ResourceMapSetUserType<MultipleChoiceAnswerCulture>>()
            .KeyColumn("MultipleChoiceAnswerID")
            .Cascade.AllDeleteOrphan()
            .Access.CamelCaseField(Prefix.Underscore)
    }

}

我们的一个项目中有另一个与此类似的示例,即使我正在解决这个问题,这仍然会在 MultipleChoiceAnswerCulture 中插入 BaseAnswer 的主键作为参考,而不是 MultipleChoiceAnswer 的主键表。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# nhibernate inheritance mapping


    【解决方案1】:

    好吧,我们已经调查过了,显然我正在处理的代码很可能遇到了同样的问题。毕竟,我们可能会继续让 MultipleChoiceAnswerCulture 中的外键成为对根父级的引用。如果有人确实知道如何解决这个问题,如果您在此处发布,我将不胜感激。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      相关资源
      最近更新 更多