2013-05-28 124 views
0

學習LINQ,試圖掌握範例...從SQL對象查詢選擇LINQ類

我已經爲其中一個核心業務對象設置了一個LINQ表類。我想從數據庫中檢索這些對象的列表,使用MS SQL服務器表對象(即不是爲所有涉及的數據庫表/視圖定義單獨的LINQ類)。我可以使用LINQ標準/連接語法,但是對於ORM代碼塊很懶/保守。也許我在尋求一些非正統的東西,而且我期望在LINQ範例中,我在LINQ類中構建數據庫結構的100%副本,然後僅使用這些類進行查詢。

回答

1

您所描述的具體是LINQ to SQL/Entity Framework提供程序,此行爲實際上並不是LINQ的產品。根本不需要任何類來模擬數據庫中的內容。比方說,例如,我在LINQ to SQL查詢中加入3個表,將它們稱爲a,b和c。你可以在陳述的最後加上一個選擇,然後做這樣的事情;

RestOfLinqQuery.Select(new { name = a.name, address = b.address, height = c.height }); 

這將返回一個由三個表中的屬性組成的匿名對象。另外,你可以創建一個具有表a,b和c中各種屬性的對象,並使用相同的初始化樣式,或者創建一個構造器來接收所有要設置和創建的字段。 Table to Object映射是由Entity Framework創建的,LINQ不受此限制。

編輯:這個答案有一個完整的查詢的好例子,比我的小例子更好; How do I convert multiple inner joins in SQL to LINQ? 正如您所看到的那樣,使用相同類型的初始化來設置來自多個表的新創建對象的屬性。另外,如果你正在研究一個企業應用程序並且遇到這個問題,一個好的解決方案是在db中創建視圖,爲你做所有的連接,然後在C#中建模視圖,而不是建模誰是行的表實際上並不代表有用的對象。

+0

從視圖中讀取實際上是一種如何解決我的需求的方法。我有這個LINQ表類與一個數據庫表相關聯。但是,當我從具有完全相同字段集合的視圖中選擇數據時,我想重用此類。 – Passiday