【发布时间】:2012-05-14 08:42:06
【问题描述】:
至少可以说这让我有点恼火......
我正在将服务层项目升级到 v.next,并在此过程中将我的所有 Linq to Sql 模型“升级”到实体框架。到目前为止,我已经完成了四个数据库,现在正在运行测试 - 我的测试失败并出现错误
System.Data.MetadataException:指定的架构无效。错误: DB.WebDB.ssdl(2,84):错误 0169:所有 SSDL 工件必须针对同一个提供程序。 ProviderManifestToken '2008' 与之前遇到的 '2005' 不同。
做一些谷歌搜索我发现这通常是由不同的 dev/live sql server 版本引起的。
但是,我的情况有所不同 - 我有多个运行不同版本的实时数据库服务器 - 2005、2008 和 2008 R2 - 我需要能够使用不同的 EDMX 与所有这些服务器通信。
关于这个 SO:Multiple Versions of SQL Server using Entity Framework in a single ASP.NET application 似乎一种解决方案是将不同版本的 EDMX 拆分为不同的程序集(即 2005 和 2008 版本)。据推测,另一种解决方案将强制我在 2008 年来源的数据库上的 ProviderManifestToken 为 2005。
但是,对我来说,我必须创建不同的程序集纯粹是为了满足 EF 中可能使一个 EDMX 破坏所有其他行为的怪癖的想法是荒谬的 - 对我来说,单独的程序集是一个架构决策。同样,破解 EDMX 文件以降级 2008 数据库也是不可取的,尤其是当下一个“从数据库更新...”命令将再次更改它时。
有人有替代解决方案吗?
【问题讨论】:
标签: .net entity-framework entity-framework-4