Subsonic中的inner join操作

來源:互聯網
上載者:User

 

有如下兩表,Rule跟,RuleGroup, RuleGroup是 Rule表與Group表的關聯表(Rule,跟 Group為多對多關係),應此,RuleGroup到Rule應該為 n:1(多對一)反之為一對多關聯性,現在對兩張表做innerjion操作,使用Subsonic可以有如下兩種寫法.

 注意,為保證產生正確的SQL語句,在Subsoinc中需要交叉放置兩張表的位置,即From<xxx>.InnerJoin(yyy,xxx)...
其中xxx,yyy表示RuleGroup,或Rule表. 如果不是交叉放置那麼將產生 xxx innerjoin xxx on xxx.nn=yy.nn 這樣的SQL語句

  代碼如下:

     SqlQuery q = new Select("Name", "RuleId").From<RuleGroup>().InnerJoin(KWSTool.DAL.Rule.IdColumn, RuleGroup.RuleIDColumn).Where("groupid").IsEqualTo(1);
        Response.Write(q.ToString() + "<br>");

        q = new Select("Name", "RuleId").From<KWSTool.DAL.Rule>().InnerJoin(RuleGroup.RuleIDColumn, KWSTool.DAL.Rule.IdColumn).Where("groupid").IsEqualTo(1);
        Response.Write(q.ToString());

  輸出結果:
 1:SELECT Name, [dbo].[RuleGroup].[RuleID] FROM [dbo].[RuleGroup] INNER JOIN [dbo].[Rule] ON [dbo].[RuleGroup].[RuleID] = [dbo].[Rule].[ID] WHERE [dbo].[RuleGroup].[GroupID] = @GroupID0

2:SELECT [dbo].[Rule].[Name], RuleId FROM [dbo].[Rule] INNER JOIN [dbo].[RuleGroup] ON [dbo].[Rule].[ID] = [dbo].[RuleGroup].[RuleID] WHERE groupid = @groupid0

 

 另外要說的是.net3.x 的Linq to Sql  中的 .DBML檔案中會將資料庫中的一對多關聯性(如 Rule 到 RuleGroup) 會轉變成"類圖"中彙總關係,表示為:Rule <>--------------->RuleGroup,即一個Rule中含有多個RuleGroup, 需要注意的是箭頭的方向跟資料庫ER圖(資料庫模型圖)剛好相反.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.