0

我开发的应用程序部署到严苛的环境(开发、测试、登台、生产)。

在开发过程中,我从现有的开发数据库创建了实体模型。一切正常,但是当我想将应用程序放到测试环境中时,我意识到以下问题:

数据库的结构在所有环境中都是相同的,但数据库架构会因环境而异。例如Customers,每个数据库中都有一个表。在我的本地开发机器上,它具有架构 dbo ( [dbo].[Customers]),但在测试环境中,架构是 test ( [test].[Customers]),而架构在登台环境 ( [stag].[Customers]) 中是 stag,依此类推。

因此,当我在测试环境中部署应用程序时,它没有从数据库中获取数据,因为实体框架希望在其中找到数据[dbo].[Customers]但没有这样的表,只有一个[test].[Customers].

我知道,我可以定义dbo 以外的模式,但这对我没有帮助,因为我需要一个不同的模式,具体取决于部署环境。

有什么建议么?不知何故,我想我会结束,要求我的数据库管理员在每个环境中的每个数据库中将架构更改为 dbo ......

4

1 回答 1

2

如果您首先使用代码,则必须使用链接问题中的流利 API 方法并从配置文件中加载当前架构(您必须在每次部署时修改配置)。

如果您将 ObjectContext 与 EDMX 一起使用,则可以使用Model adapter。与 DbContext 一起使用的其他方法是将 EF 元数据存储在文件中并执行一些代码,这些代码将在应用程序启动时更改 ssdl 文件中的模式。

于 2012-05-23T08:01:49.330 回答