实体框架:使用多个架构还是两个不同的数据库?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体框架:使用多个架构还是两个不同的数据库?相关的知识,希望对你有一定的参考价值。

我有一个现有数据库,需要添加其他表等。我无法控制该数据库,因此我想我将在同一数据库中但在不同架构下创建表。据我了解,这将使我可以创建表,而不必担心名称冲突等。

但是我如何通过EF同时访问这两种模式?我本质上会有两个不同的连接吗?还是我会有两种不同的情况?

我还有另一个选择是创建另一个数据库,但是我不知道这有什么优点和缺点。当然,我需要在我的表和其他表之间创建INNER JOINS。是否可以在EF中使用2种不同模式或数据库之间的内部联接?

我正在使用的数据库是SQL Server 2008 R2。

答案

如果要使用来自两个模式的表之间的联接,则必须在同一上下文中定义这两个表(这也意味着将使用单个连接)。

一旦使用两种不同的上下文类型分别映射每个架构,或者一旦使用了两个数据库,您将无法在Linq-to-entities / ESQL查询中使用其他架构的实体,并且将无法使用导航属性从其他架构表。在这种情况下,解决方法很复杂,因为必须使用别名或数据库视图才能将表从第二个数据库获取到第一个数据库。

EF只能与映射到当前上下文的数据库对象一起使用,并且它只能打开与单个数据库的连接(它也不能使用数据库前缀来访问同一服务器上不同数据库的表。

以上是关于实体框架:使用多个架构还是两个不同的数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架关联来自多个上下文的对象

如何使用多个数据库模式管理 Doctrine 查询

具有多个 MySql 模式的实体框架多个 DbContext

实体框架,多个 edmx 共享连接字符串 - 可能吗?

实体框架代码首先迁移两个不同的数据库

是否可以在实体框架中将表FK链接到另外两个PK?