Entity Framework 一對多關係對映

2022-03-05 09:13:33 字數 2091 閱讀 1637

ef中關係對映也是乙個很關鍵的內容,關係對映和屬性對映一樣,也是在onmodelcreating中配置對映。ef中的關係對映有如下三種:

one-to-many relationship(一對多)

many-to-many relationship(多對多)

one-to-one relationship(一對一)

我們今天先講解one-to-many relationship(一對一關係)

零、建立所需類

public

abstract

class

base

public

datetime createtime

public

datetime modifiedtime

}

public

class

customer

:base

public

string email

public

virtual icollection orders

}public

class

order

:base

public

int price

public

int coustomerid

public

virtual

customer customer

}

一、one-to-many relationship

在編寫**之前,我們先分析一下客戶和訂單的關係。乙個客戶可以有多個訂單,但乙個訂單只能屬於乙個客戶,所以我們用到了ef中的hasrequired,乙個客戶又存在多個訂單,因此也使用到了withmany,同時order表中有customerid作為外來鍵,因此我們用到了hasforeignkey。根據我們的分析,編寫**如下:

public

class

customermap

:entitytypeconfiguration

}public

class

ordermap

:entitytypeconfiguration

}

protected

override

void

onmodelcreating

(dbmodelbuilder modelbuilder)

base

.onmodelcreating

(modelbuilder)

;}

注1:在實際專案中需要編寫很多的實體類,如果將所有實體類的對映直接寫在onmodelcreating中會造成**臃腫,不易維護,因此我們在這裡將每個類的對映寫在對應的對映檔案中,最後再將每個類的對映類註冊到onmodelcreating

注2:上述**和描述是從客戶的方向連編寫的關係對映,如果以訂單的角度來編寫關係對映的話,只需刪掉customermap中的關係配置,在ordermap中增加關係配置部分修改如下:

hasrequired

(p =

> p.customer)

.withmany

(p =

> p.orders)

.hasforeignkey

(p =

> p.coustomerid)

.willcascadeondelete

(false

);

執行控制台**後,我們將在資料庫看到表和表關係都被建立了:

Entity Framework 架構簡介

當微軟的wcf 大行其道,通用資料訪問模型entity framework卻稍遜一籌,有很多需要完善和進步的地方,本文對entity framework 架構做一下簡介。實體框架 entitry framework 以下簡稱ef 看起來像乙個有趣的技術,更強大,比linq to sql 更先進。這兩...

entity framework 批量刪除

以前用sql寫批量刪除的時候,感覺挺利索的,簡潔地寫了 public bool delectusersuggest string addsql 然後在頁面層直接呼叫 現在用entity framework,感覺有點麻煩不能直接delete,還要先把資料查出來,以下是主要 1 先查出實體 region...

Entity Framework 動態查詢

不想多說什麼直接說 region 搜尋並分頁 ljy 傳入搜尋條件,當前頁碼,每頁的顯示的條數,資料的總數 輸出引數 三個引數,返回 商實體 搜尋條件 當前頁碼 每頁的顯示的條數 資料的總數 public iqueryable endregion 在頁面呼叫時如果通過時間來查詢,請記住一定要這樣寫 ...