LINQ to SQL для таблиц в разных базах данных. Или посмотреть? - PullRequest
3 голосов
/ 22 апреля 2010

У меня есть таблица сообщений и таблица пользователей. Оба находятся в отдельных базах данных. В таблице сообщений есть идентификатор пользователя, который используется для присоединения к таблице пользователей для поиска таких вещей, как имя пользователя.

Как я могу создать это в LINQ to SQL? Я не могу , кажется, сделать кросс-соединение с базой данных.

Должен ли я создать представление в базе данных и использовать его вместо этого? Будет ли это работать? Что будет с CRUD против него? Например. если я удалю сообщение - конечно, оно не удалит пользователя? Я полагаю, что это приведет к ошибке.

Что делать? Я не могу переместить таблицы в одну базу данных!

1 Ответ

3 голосов
/ 22 апреля 2010

Представление будет работать, если вы предоставили доступ к обеим базам данных настроенному пользователю. Вам нужно будет использовать двухточечную запись. Кстати, это будет работать, только если обе базы данных находятся на одном сервере.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...