许多人引用的对象,没有自己的属性

时间:2016-04-21 12:03:47

标签: c# nhibernate fluent-nhibernate-mapping

我有一个被许多其他类引用的类:

class Foo
{
    // Some properties
}

class Bar
{
    public Foo Foo { get; set; }
}

我可以在Bar结尾处映射此关系:

class BarMap : ClassMap<Bar>
{
    public BarMap()
    {
        References(b => b.Foo).Cascade.All();
    }
}

当我删除Bar对象时,这是有效的,但如果我尝试删除Foo对象,则会出现外键冲突。我理解这是因为NHibernate不知道有Bar依赖它,所以很高兴尝试删除Foo而不是Bar

我知道我可以按照以下方式做点什么:

class Foo
{
    public IList<Bar> Bars { get; set; }

    // some properties
}

class FooMap : ClassMap<Foo>
{
    public FooMap()
    {
        HasMany(f => f.Bars)
            .Inverse()
            .Cascade.AllDeleteOrphans();
    }
}

有没有办法映射Foo,以便在不向Foo添加属性的情况下知道反向多对一关系?我真的不想为引用它的每种类型的对象添加一个集合Foo

1 个答案:

答案 0 :(得分:1)

我认为我已经正确理解了你的目标,我担心答案是你不能轻易做到这一点。

您可以尝试使用IInterceptor or event结合NHibernate从您的映射生成的元模型的一些分析(参见ISessionFactory.GetAllClassMetadata),但这可能需要大量的工作时间。

相关问题