2010-04-22 46 views
3

我有一個消息表和一個用戶表。兩者都在單獨的數據庫中。 Message表中有一個用戶標識,用於連接到用戶表來查找userName等內容。跨數據庫的表的LINQ to SQL。還是查看?

如何在LINQ to SQL中創建這個?我不能似乎做一個跨數據庫連接。

我應該在數據庫中創建一個視圖並使用它嗎?這會工作嗎? CRUD會對它發生什麼?例如。如果我刪除了一條消息 - 它肯定不會刪除用戶?我會想象它會拋出一個錯誤。

怎麼辦?我無法將表格移動到同一個數據庫中!

回答

3

如果您已授予兩個數據庫對配置用戶的訪問權限,則視圖將起作用。你需要使用2點符號。如果兩個數據庫位於同一臺服務器上,這將只能順利運行。

create view vwUserMessages as 
select * from db1.dbo.Users as users 
inner join db2.dbo.Messages as msg on msg.UserID = users.id 

對於CRUD:一個觀點是(usualy)僅適用於閱讀:做更新等直接到相關的表,或使用存儲過程:

create proc pdeleteUserMessages (@UserID int) as 

begin trans 

delete db2.dbo.Messages where userid = @UserID 
delete db1.dbo.Users where id = @UserID 

commit trans 

go 
+1

您可以通過添加使用視圖的CRUD操作觸發他們。這有點骯髒,但可能會伎倆。 – Steven 2010-04-22 10:08:36

+0

@Steven瘋狂的想法! (瘋狂的好方法) – BritishDeveloper 2010-04-22 11:11:48

+0

我想我可能會使用存儲的特效進行創建和刪除。爲消息表以及視圖創建另一個數據上下文將會是太重複的事了......對吧?還是有一個很好的方法來結合這兩個? – BritishDeveloper 2010-04-22 11:36:43