OK,讓我們試着讓這個更清楚一點:這裏是你提到它在您的文章基本的NerdDinner模式:
alt text http://i31.tinypic.com/nejqmu.jpg
你是否將有一個「回函」的問題你可以添加實體的樣式屬性(一個「EntitySet」)並不取決於你是否有一個或多個關係 - 這取決於你所處的關係的哪一端。
的父表(這裏:晚餐)通常具有0,1,或更多的子條目中子表(這裏:RSVP)。
所以在父表中,你必須有一個屬性「RSVPs」,允許你存儲多個實體 - 一個實體集。
但是,從子表中,孩子只能與父母完全關聯 - 因此,您只有一個名爲「Dinner」的實體(此RSVP旨在用於此晚餐)。
您可以看到清楚的,當你點擊兩個實體之間的線,看它的屬性:
alt text http://i31.tinypic.com/2f07our.jpg
的「基數」一到多隻定義了這一點:家長有很多孩子,但一個孩子只有一個父母。
因此,在你的代碼,你就可以這樣寫:
NerdDinnerDataContext ctx = new NerdDinnerDataContext();
Dinner upcomingDinner = new Dinner();
upcomingDinner.EventDate = new DateTime(2009, 10, 10);
upcomingDinner.Address = "One Microsoft Way, Redmond, WA";
upcomingDinner.ContactPhone = "(555) 123 1234";
upcomingDinner.RSVPs.Add(new RSVP() { AttendeeName = "ScottGu" });
upcomingDinner.RSVPs.Add(new RSVP() { AttendeeName = "ScottHa" });
upcomingDinner.RSVPs.Add(new RSVP() { AttendeeName = "PhilHa" });
RSVP scottHunter = new RSVP();
scottHunter.AttendeeName = "Scott Hunter";
scottHunter.Dinner = upcomingDinner;
父(晚餐)的回函(一EntitySet的,集合是準確的,在LINQ到SQL術語),因此你可以有
upcomingDinner.RSVPs.Add(new RSVP() { AttendeeName = "ScottGu" });
。另一方面,孩子財產「RSVP」只能恰好與一個晚餐相關聯,因此它不具有EntitySet的,但公正的單個實例「晚餐」建立連接,你會寫:
scottHunter.Dinner = upcomingDinner;
這是否使事情變得更清楚一點?這實際上是關係數據庫建模的基礎知識,以及如何將父表和子表彼此關聯 - 由Linq-to-SQL轉換爲對象以及它們如何連接和關聯。
馬克
一定要在http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-檢查一下Scott Guthrie的LINQ到SQL教程1.aspx – 2009-08-15 15:03:09