1
我想在我的应用程序中创建一对一的映射,我尝试了几个在Stackoverflow和其他地方找到的示例,但没有迄今为止成功。如何使用映射属性在NHibernate中创建一对一的映射
我有一个订单类和一个预订类。若干订单可以在没有预订的情况下存在,但预订必须始终有订单。
我的计划是把FK的预约表,代码如下:
class Order
{
...
[OneToOne(Cascade = "all-delete-orphan")]
public Reservation Reservation
{
get;
private set;
}
}
和类预约:
class Reservation
{
...
[ManyToOne(Column = "order_id", NotNull=true, Unique=true)]
public Order Order
{
get;
set;
}
}
这工作得很好,但是当我尝试删除一个订单:
session.Delete(myOrder);
session.FlushSession();
由于预订FK为空,我得到一个FK冲突异常,但由于Cascade参数,我期待自动删除预留。
有什么建议吗?
谢谢
我不知道它是如何与属性的工作,但你可能需要设置'在订单预约财产逆= TRUE;。 – ChrisAnnODell 2011-03-25 14:09:36
看起来你并没有'Order'和'Reservation'之间的1对1关系,而是多对一的关系,Chris说,你需要将其中的一个标记为'inverse = true'。 – R0MANARMY 2011-03-25 14:24:40
ChrisAnnODell:我在Order类的Reservation属性中看不到inverse选项。 R0MANARMY os的地方建议像我一样使用ManyToOne,我发现问题,请参阅下面的答案。 – bcsanches 2011-03-26 02:39:00