第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

NHibernate:如何用一對多的關(guān)系來表示多到多的關(guān)系?

NHibernate:如何用一對多的關(guān)系來表示多到多的關(guān)系?

我在網(wǎng)上讀過一篇文章(我再也找不到那篇文章了),一段多到多的關(guān)系可以被一對多的關(guān)系所取代。有人能舉個(gè)例子嗎?
查看完整描述

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

我只是想問這個(gè)問題,然后意識到,沒有任何答案。這是一個(gè)遺憾,盡管我經(jīng)常指出NHibernate文檔聲明:24.最佳做法

不要使用外來的關(guān)聯(lián)映射。

真正的多到多關(guān)聯(lián)的良好用法是罕見的。大多數(shù)情況下,您需要存儲在“鏈接表”中的其他信息。在這種情況下,對中間鏈接類使用兩個(gè)一對多的關(guān)聯(lián)要好得多。事實(shí)上,我們認(rèn)為大多數(shù)的關(guān)聯(lián)是一對多的和多對一的,在使用任何其他的關(guān)聯(lián)風(fēng)格時(shí),你應(yīng)該小心,并問自己是否真的有必要。

下面的示例23.2.作者/作品..摘錄,簡化版本的多到多的關(guān)系AuthorWork:

<class name="Work" table="works" ...>
        <id name="Id" column="id" generator="native" />
        ...        <set name="Authors" table="author_work" lazy="true">
            <key>
                <column name="work_id" not-null="true"/>
            </key>
            <many-to-many class="Author">
                <column name="author_id" not-null="true"/>
            </many-to-many>
        </set></class>

它的多對多目標(biāo)作者:

<class name="Author" table="authors">
  ...  <set name="Works" table="author_work" inverse="true" lazy="true">
     <key column="author_id"/>
     <many-to-many class="Work" column="work_id"/>
  </set></class>

因此,如果我們想訂購這套裝貨工程,我們確實(shí)有一個(gè)問題。對表中沒有列。但更重要的是,沒有辦法管理這樣的專欄。

我們所能做的就是引入對偶對象:AuthorWork并根據(jù)需要擴(kuò)展對表。

public class AuthorWork{

    public virtual Author Author { get; set; }
    public virtual Work Work { get; set; }
    public virtual int OrderBy { get; set; }}

AuthorWork的映射

<class name="AuthorWork" table="author_work">
    ...    <many-to-one name="Author" column="author_id" />
    <many-to-one name="Workr"  column="work_id" />
    <property name="OrderBy" />

有了這個(gè),我們可以將多到多的映射轉(zhuǎn)換為一對多的映射,例如作者集合:

<set name="Authors" lazy="true"
  order-by="OrderBy">
  <key column="work_id" not-null="true"/>
  <one-to-many class="AuthorWork" /></set>

我們可以管理實(shí)體AuthorWork,設(shè)置OrderBy列,從而有效地處理配對表。

注:必須同意這一建議,在綜述中提出的要求越多,我們就越高興我們有辦法來管理這種關(guān)系!


查看完整回答
反對 回復(fù) 2019-07-13
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

由于關(guān)系DBMS通常不支持多到多關(guān)系,所以這些關(guān)系使用一個(gè)鏈接表和兩個(gè)一對多的關(guān)系來表示。例如,多到多之間的關(guān)系UserS和Roles表示為User one-to-many UserRoles many-to-one Role..NHibernate通常隱藏這一點(diǎn),并允許多到多的關(guān)系商店透明。如果需要,可以始終選擇顯式地映射鏈接表。你會給我地圖UserRole  UserRoles,在哪里UserRoles包含兩個(gè)多對一的關(guān)系(到User和一個(gè)Role分別)在這種情況下User也不Role的收藏(一對多)UserRoles實(shí)例(或者至少它們可以是反向的)。這對于減少內(nèi)存占用非常有用,因?yàn)槟枰獙⑤^少的集合加載到內(nèi)存中。缺點(diǎn)是查詢變得更加復(fù)雜。

查看完整回答
反對 回復(fù) 2019-07-13
  • 2 回答
  • 0 關(guān)注
  • 507 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號