【问题标题】:What is the best implementation for changing the database schema at runtime using Entity Framework 4?使用 Entity Framework 4 在运行时更改数据库模式的最佳实现是什么?
【发布时间】:2026-01-07 08:20:03
【问题描述】:

我们正在 SQL Server 上构建一个 ASP.Net MVC 2 多租户应用程序,使用讨论的“单一数据库,单独架构”模型,除其他地方外,herehere,其中每个租户都有一个或多个用户,并使用其自己的、特定于租户的 SQL Server 架构进行拆分。

应用程序正在使用 Entity Framework 4。为了让不同租户的用户访问其架构中的数据,我们需要能够在创建实体的 ObjectContext 时指定架构。

我看到了一些对该工具的引用 (http://efmodeladapter.codeplex.com/),但是 (1) 我不想在每次生成 EDMX 时都更新代码,如使用说明中指定的那样,并且 (2) 它是生成的在 EF4 之前,所以我希望现在有更简单的方法。

那么,在 EF4 中执行此操作的最佳方法是什么?

谢谢

【问题讨论】:

标签: asp.net-mvc entity-framework entity-framework-4 multi-tenant


【解决方案1】:

好吧,那好吧。对于未来的搜索者,我已经实现了类似于this example 的东西,尽管我从this example 等嵌入式资源中加载了ssdl、csdl 和msl。

在实现中,我在 MVC 操作请求中创建存储库对象时,我使用用户上下文来确定需要什么模式,使用前面提到的示例来编写模式并创建一个 EntityConnection,然后使用它创建我的ObjectContext 实体。

它似乎运行得很好,虽然我有点担心它直观上看起来可能是一个性能问题。

【讨论】:

    最近更新 更多