2009-07-16 79 views
2

今天早上我在聽網點岩石時聽到這句話。顯然linq to sql只支持一對一的表映射。一對一表映射是什麼意思?

+0

給受訪者:那麼你是在說如果你有兩個相關的表,並且它們的關係是一對一的(vs一對多)那麼你有一個「一對一的表映射」? – MedicineMan 2009-07-16 17:40:52

+0

@MedicineMan,我認爲你和這裏的受訪者對報價有些誤解。請注意我的答案作爲可能的選擇。你還可以提供哪些情節,如果可能的話報價發生的時間?謝謝 – 2009-07-17 16:01:13

回答

1

這意味着對於一個表中的每個條目,在另一個表中存在單個相關條目。但是,Linq to SQL支持除一對一以外的各種數據關係。例如,看一下Join examples here

0

一對一關係意味着在一個桌子上有一個和相關的表只有一條記錄的每個記錄......

但LinqToSql支持一對一一個映射許多關係... 許多到許多可以完成,但它需要一些編碼...

+1

說相關表中只能有一條記錄是否更正確? – 2009-07-16 17:35:39

4

一對一的映射意味着一個父行只能有一個子行。有各種不同的映射,當你考慮設計

一到多:有車有很多部分
多到一:許多汽車使用相同的部分
許多一對多:許多部件都在許多汽車使用
一比一:一部分是在一個汽車

2

我知道的LINQ到SQL確實允許不只是一對一的映射,而且一對多的映射,已經提到。

我或者沒有聽說過(或者最近聽過)你提到的DNR情節(哪一個是什麼時候提到這個引用)。但我覺得他們不太可能意味着Linq-to-Sql不能處理一對多的關係。

我認爲他們的意思是Linq-to-Sql只能對「實體」進行一對一的匹配。因此,您的數據庫可以將CUSTOMER和INVOICE作爲一對多關係,而在Linq-to-Sql中,您將擁有一個名爲Customer的對象和一個名爲Invoice的對象,其中它們之間的關係爲1到很多,但.NET和數據庫表是1到1.要簽約Linq-to-Entities可以與它們的對象有一對多的關係,例如你可以有一個名爲INVOICE的數據庫表,但是你可以有多個Linq對象,例如Invoice和PaidInvoice,這些都將引用相同的數據庫表,但PaidInvoice將Paid_flg列的值設置爲1而不是0.