【问题标题】:NHibernate mapping One-to-One with Foreign Key AssociationNHibernate 与外键关联一对一映射
【发布时间】:2014-12-12 15:49:39
【问题描述】:

我有两张桌子:

TableA :
    Id (identity)
    IdTableB(Foreign Key) Nullable
    ...

TableB :
    Id (identity)
    ...

我做了那个映射:

A 类(表 A)

...
m.ManyToOne<ClassB>(x => x.ClassB, map =>
{
     map.Column("IdTableB");
     map.Cascade(Cascade.All);
     map.Unique(true);
});
...

B 类(表 B)

...
m.OneToOne<ClassA>(x => x.ClassA, map =>
{
     map.PropertyReference(x => x.ClassB);
     map.Constrained(false);
});   
...

好的,映射很好,选择/保存也很好。

现在我想从 ClassA 对象中删除 ClassB,就像这样:

ClassA classA = session.Load(1);
classA.ClassB = null;
session.commit();

在 IdTableB 上将 de tableA 更新为 null,但不会从 tableB 中删除 ClassB。

首先,我的映射正常吗?有没有更好的解决方案?

其次,当我从关系中明确删除时,如何删除那个 ClassB 对象?

谢谢

【问题讨论】:

    标签: nhibernate nhibernate-mapping fluent-nhibernate-mapping


    【解决方案1】:

    正如这里试图解释的那样:NHibernate Many-to-one cascade

    Many-to-one 不支持级联all-delete-orphan。而且这种设置可以删除不再引用的实体...

    换句话说,使many-to-one 引用为空 - 不会触发删除。

    所以,映射没问题,但上面所需的功能还没有到位。解决方案是显式删除引用 session.Delete(classA.ClassB)...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      相关资源
      最近更新 更多