天天看點

Entity Framework 4.1 and Poco 使用存儲過程聯表查詢

一:資料庫支援

MiniNW可以在本示例代碼的如下位置獲得:

<a href="http://images.cnblogs.com/cnblogs_com/luminji/201107/201107031954497942.png"></a>

資料庫對應關系如下(由于資料庫相對簡單,是以直接列出資料,從資料可以直覺看出兩表的關系):

<a href="http://images.cnblogs.com/cnblogs_com/luminji/201107/2011070319545026.png"></a>

二:生成POCO及DbContext

三:主表從表資料一起關聯查詢

資料庫中存在存儲過程GetCategory:

<a href="http://www.cnblogs.com/luminji/archive/2011/07/04/2096896.html#">+ View Code</a>

執行此存儲過程的代碼如下:

得到的資料如下:

<a href="http://images.cnblogs.com/cnblogs_com/luminji/201107/201107031954528763.png"></a>

其中,Category所對應Products是延遲加載進來的,如果我們隻使用Category,資料引擎就不會查詢Products表的資料,但是,隻要我們一到Category中檢視Products,就會擷取如上圖這樣的Products資料。請根據源碼中的兩個資料實體了解。

執行存儲部分的代碼EF為我們生成如下:

延遲加載部分的代碼EF為我們生成如下:

三:僅擷取主表資料

如果不需要關聯表的資料,我們可以像下面這樣編碼。以下這段代碼使用的是和上文一樣的存儲過程:

擷取資料如下:

<a href="http://images.cnblogs.com/cnblogs_com/luminji/201107/201107031954545090.png"></a>

四:由從表關聯主表資料

從表關聯主表的存儲過程如下:

注意,原始例子所帶的存儲過程不是這樣的,多了這樣的語句:

<a href="http://images.cnblogs.com/cnblogs_com/luminji/201107/201107031954551111.png"></a>

DbContext預設支援實體類型的字段和資料庫視圖是一個字段名,是以我們去掉了重命名部分。

實作此功能的代碼如下:

要注意,主表的資料也是延遲加載的,隻有使用到的時候才會被查詢。

EF為我們生成的代碼如下:

擷取的資料如下:

<a href="http://images.cnblogs.com/cnblogs_com/luminji/201107/20110703195457371.png"></a>

本文轉自最課程陸敏技部落格園部落格,原文連結:http://www.cnblogs.com/luminji/archive/2011/07/04/2096896.html,如需轉載請自行聯系原作者

上一篇: 第八章 VLSM