我有一个Message表和一个User表。两者都在不同的数据库中。 Message表中有一个用户ID,用于连接到User表以查找userName。
之类的内容如何在LINQ to SQL中创建它?我不能似乎来进行跨数据库连接。
我应该在数据库中创建一个View并使用它吗?那会有用吗? CRUD会对它发生什么?例如。如果我删除一条消息 - 肯定不会删除用户?我想它会引起错误。
怎么办?我无法将表移动到同一个数据库中!
答案 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