4

У меня есть две сущности, Foo и Bar как так:NHibernate: (один или ноль), чтобы (один или ноль) отображение

public class Foo 
{ 
    public virtual Guid FooID { get; set; } 
    public virtual Bar MyBar { get; set; } 
} 

public class Bar 
{ 
    public virtual Guid BarID { get; set; } 
    public virtual Foo MyFoo { get; set; } 
} 

оба этих субъектов могут существовать независимо друг от друга, но в некоторых случаях они связаны, и когда это произойдет, я хочу убедиться, что они связаны в слое persistence.

Я хочу, чтобы мои таблицы напоминают это:

create table Foo (
    FooID int primary key, 
    -- other stuff 
); 

create table Bar (
    BarID int primary key, 
    FooID int null references Foo(FooID) on delete no action on update no action 
); 

... и для NHibernate, чтобы иметь возможность создать связь между ними.

Как я могу сопоставить это (предпочтительный XML)?

+0

@JBNizet, рассматривали ли вы читаете мой вопрос, прежде чем downvoting это? Это не то, о чем я прошу. –

+0

Вы спрашиваете, как создать двунаправленную ассоциацию OneToOne, отображаемую внешним ключом, что объясняет связанная документация. –

+0

@JBNizet, в частности, где отношения слабо ограничены с обеих сторон. Это не рассматривается в этой документации. –

ответ

6

Таким образом, @JBNizet, в своем непринужденном и саркастическом ключе, указал, что отношение нуля или нуля к нулю считается двунаправленным отношением «Один к одному», относящимся к Hibernate и NHibernate; Таким образом, в соответствии с http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#assoc-bidirectional-121, отображение будет выглядеть так:

<class name="Foo"> 
    <id name="FooID" column="FooID"> 
     <generator class="guid" /> 
    </id> 
    <one-to-one name="MyBar" property-ref="MyFoo" /> 
</class> 

<class name="Bar"> 
    <id name="BarID" column="BarID"> 
     <generator class="guid" /> 
    </id> 
    <many-to-one name="MyFoo" column="FooID" unique="true" not-null="false" /> 
</class> 

(... Я думаю, редактирует с пояснениями радушны.).

+2

Спасибо, что поняли это. +1 по вопросам и ответам – Rippo

Смежные вопросы