1

任何人都可以幫忙嗎?使用關係/外鍵與linq2sql?

我在我的Reservation(prim key)和Insurance(for key)表之間創建了一個關係,並導入到linq2sql中,並檢查了我自動創建的c#文件,果然我有reservation.MyFieldNames等etc PLUS reservation.Insurance是我的關係,但保留。保險我看不到保險的字段名稱 - 我錯過了什麼?

我必須打電話給GetInsurances嗎?我什麼也沒看見..其實Insurance是Linq.entityset類型的?

還有,我也希望從ILIST或東西創建我的預約表(這是很好的和容易的),然後自動「注入」一保險(即1對多)..

這是不可能的,

非常感謝任何幫助

ps我確實通過T4 Toolbox創建了自動創建的c#dto文件,但這不會有什麼區別。我只是有一個單獨的文件爲每個實體..

回答

4

不是100%確定您的意思是「我什麼也沒看到」。

假設你有一個Reservations表和一個Insurance表引用「保留」 - 這是什麼樣的關係? 1:1? 1:很多?哪個方向?你能發佈你的DBML設計器表面的截圖嗎? (把它上傳到www.tinypic.com,並在你的問題中包含鏈接作爲圖像)?

根據關係的性質,「預訂」類將包含「保險」(EntityRef<Insurance>)或「保險」對象(EntitySet<Insurance>)的列表(EntitySet)的實例 - 您應該能夠導航那些代碼,例如

string foo = myReservation.Insurance.CustomerName; // or whatever 

你不會在設計器表面看到這些 - 這只是一個鏈接到其他類的鏈接,在你的設計表面上,對吧?

規則同樣適用於其他方式 - 如果保險正好與一個預約相關的,你應該能夠(代碼)做:

string bar = myInsuranceObject.Reservation.MyFieldName1; // or whatever 

所以它不是很清楚,我這種情況下你你真的指的是 - 你能否詳細說明你的問題並使之更清楚?

根據NerdDinner sample,我會盡力詳細說明。退房DBML設計圖面:

alt text http://i30.tinypic.com/2q21z6b.jpg

在這裏,你看不到任何用來前後移動對象之間的屬性。但是你確實看到「RSVP」類有一個「DinnerID」外鍵,它將它鏈接到「Dinner」類。所以這是一個1:n的關係:一個Dinner有n個RSVP,每個RSVP只有一個Dinner。

在你的代碼,你現在看到的這些創建的屬性 - 檢查出RSVP類第一:

alt text http://i31.tinypic.com/fazaz5.jpg

你可以看到RSVP類有一個EntityRef<Dinner> - 一個參考(鏈接)只有一個 - 這是RSVP的晚餐。

另一方面,Dinner類有一個計劃參加那個晚餐的所有極客的RSVP的整個列表!

alt text http://i29.tinypic.com/66yn9e.jpg

所以在Dinner類,你有一個EntitySet<RSVP> - 參加者,其中當你與你的Dinner類工作,就可以依次選擇的完整列表。

這是否使事情更清楚一點?

Marc

+0

謝謝你打開了我的眼睛,我想我現在明白了!謝謝 – 2009-08-24 15:32:57