我有一个被许多其他类引用的类:
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
。
答案 0 :(得分:1)
我认为我已经正确理解了你的目标,我担心答案是你不能轻易做到这一点。
您可以尝试使用IInterceptor or event结合NHibernate从您的映射生成的元模型的一些分析(参见ISessionFactory.GetAllClassMetadata
),但这可能需要大量的工作时间。