Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 实体框架更改每个连接的架构名称_.net_Entity Framework - Fatal编程技术网

.net 实体框架更改每个连接的架构名称

.net 实体框架更改每个连接的架构名称,.net,entity-framework,.net,Entity Framework,我正在开发一个应用程序,该应用程序将在MS SQL Server 2008中将客户端数据分离到不同的模式中。每个模式的表结构都是相同的。实体框架4.1将用于访问数据,每个客户端使用不同的连接字符串。连接字符串中的用户被设置为使用数据库中的特定模式,这不是问题 我遇到的问题是,查询中的模式名称在EDMX中是硬编码的。如果我从.edmx中的每个实体中删除架构名称,那么.NET将使用EntityContainer名称。a如何更改每个连接的架构名称? 我使用一个通用的DbContext建立连接,每个请求

我正在开发一个应用程序,该应用程序将在MS SQL Server 2008中将客户端数据分离到不同的模式中。每个模式的表结构都是相同的。实体框架4.1将用于访问数据,每个客户端使用不同的连接字符串。连接字符串中的用户被设置为使用数据库中的特定模式,这不是问题

我遇到的问题是,查询中的模式名称在EDMX中是硬编码的。如果我从.edmx中的每个实体中删除架构名称,那么.NET将使用EntityContainer名称。a如何更改每个连接的架构名称? 我使用一个通用的DbContext建立连接,每个请求提供一个连接字符串


我在codeplex上尝试了Brandon Haynes,但这似乎不适用于最新版本的EF。感谢您的帮助

用EDMX+
DbContext
解决这个问题可能会很困难,因为唯一的方法是为每个模式使用单独的SSDL。SSDL是EDMX文件的一部分,是定义所有表(包括其模式名称)的部分。您可以在运行时更改SSDL(默认情况下,它只是存储为程序集资源的XML),但您必须手动为每个架构创建
MetadataWorkspace
,使用它创建
EntityConnection
,并将连接传递给上下文构造函数

EF ModelAdapter基于
ObjectContext
,因此如果要使用ObjectContext API(.NET 4.0),则必须使用ObjectContext API,而不是DbContext API

如果您转向代码映射(没有EDMX,但使用fluent API来描述映射),就有可能实现它,因为您将能够对单个映射集进行参数化,并使用多个
DbModel
实例(每个模式一个)