跨数据库的表的LINQ to SQL。还是查看?

时间:2010-04-22 09:39:36

标签: asp.net sql asp.net-mvc linq linq-to-sql

我有一个Message表和一个User表。两者都在不同的数据库中。 Message表中有一个用户ID,用于连接到User表以查找userName。

之类的内容

如何在LINQ to SQL中创建它?我不能似乎来进行跨数据库连接。

我应该在数据库中创建一个View并使用它吗?那会有用吗? CRUD会对它发生什么?例如。如果我删除一条消息 - 肯定不会删除用户?我想它会引起错误。

怎么办?我无法将表移动到同一个数据库中!

1 个答案:

答案 0 :(得分: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:视图(通常)仅用于阅读:直接对相关表进行更新等,或者使用存储过程:

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