相关疑难解决方法(0)

实体框架代码首先使用SQL Server同义词

我有这样的情况,我将有多个公司访问我的应用程序的单个实例,但我需要隔离他们的数据,以避免意外地为另一家公司加载数据,并简化每个公司的数据库备份.

理想情况下,我想将数据拆分到不同的数据库中,如下所示:

  • 一个SQL Server数据库,包含所有用户的列表,以及所有用户/公司通用的任何表

  • N个公司特定的数据库,每个数据库具有相同的模式,但每个公司的数据不同.登录时,我会动态选择特定用户公司的数据库

我希望能够查询公司特定的数据表,但是可以在共享数据库上执行连接(例如,我可以将外键存储在公司数据库表中,该表连接到共享表的主键上另一个数据库).

我发现了SQL Server同义词,看起来他们可以完成这项工作,似乎我可以通过在SQL Server Management Studio中使用查询成功地在两个数据库之间加入.

是否可以在Entity Framework Code First中使用同义词表,如果是这样,我的POCO类/ DbContext需要看起来像什么?

谢谢 :)

sql-server entity-framework synonym code-first

8
推荐指数
1
解决办法
4189
查看次数

你可以在SQLServer 2k5中的链接服务器表视图上有一个外键吗?

我有一个带有链接服务器的SQLServer到另一个其他数据库.我在该链接服务器上创建了一个视图

create view vw_foo as
select
[id],
[name]
from LINKEDSERVER.RemoteDatabase.dbo.tbl_bar
Run Code Online (Sandbox Code Playgroud)

我想谈谈以下内容

alter table [baz] 
add foo_id int not null
go

alter table [baz] with check 
add constraint [fk1_baz_to_foo] 
  foreign key([foo_id]) 
  references [dbo].[vw_foo] ([id])
go
Run Code Online (Sandbox Code Playgroud)

但是这会产生错误:"外键'fk1_baz_to_foo'引用对象'dbo.vw_foo',它不是用户表."

如果我尝试使用以下内容将外键直接放在表上

alter table [baz] with check 
add constraint [fk1_baz_to_bar] 
  foreign key([foo_id]) 
  references LINKEDSERVER.RemoteDatabase.dbo.tbl_bar ([id])
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

对象名称"LINKEDSERVER.RemoteDatabase.dbo.tbl_bar"包含的前缀数量超过最大数量.最大值为2.

有什么方法可以达到同样的效果吗?

sql sql-server sql-server-2005 foreign-keys linked-server

5
推荐指数
1
解决办法
9020
查看次数