【问题标题】:Entity Framework Change Schema Name Per Connection每个连接的实体框架更改架构名称
【发布时间】:2012-02-15 05:45:38
【问题描述】:

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

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

我在 codeplex 上尝试过 Brandon Haynes EF ModelAdapter,但这似乎不适用于最新版本的 EF。任何帮助表示赞赏!

【问题讨论】:

    标签: .net entity-framework


    【解决方案1】:

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

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

    如果您转向代码映射(没有 EDMX,但使用流利的 API 来描述映射),则可以实现它,因为您将能够参数化您的单个映射集并使用多个 DbModel 实例(每个架构一个) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 2013-12-11
      相关资源
      最近更新 更多