Ian*_*n B 11 entity entity-framework sql-server-2005 sql-server-2000
我在使用SQL Server 2000,2005和2008的Web应用程序中使用实体框架.当我使用2008以外的任何东西创建新的EDMX文件时(我创建的第一个edmx版本)我收到error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier.
它似乎在代码中的某个地方连接连接到2008数据存储区,当它检查SSDL文件并看到不同的ProviderManifestToken值时,它会抛出此错误.我有点沮丧.很难想象EF只能在每个应用程序中使用单个版本的Sql Server.我相当肯定必须有一个设置或解决方法.有没有人有解决方案在单个Web应用程序中使用不同版本的SQL Server和Entity Framework?
Cog*_*eel 24
我能够通过将每个edmx
放在一个单独的组件中来实现这一目标.然后在连接字符串中,替换所有res://*/...
与res://NameOfAssembly/...
我甚至可以在两个实体模型之间执行连接(与我在其他来源中找到的声明相反),例如:
var oneDb = new Entities2000();
var otherDb = new Entities2005();
var results = from one in oneDb.SomeSet
join other in otherDb.OtherSet
on one.Property equals other.Property
select new {
SomeProp = one.SomeProp,
OtherProp = other.OtherProp
};
Run Code Online (Sandbox Code Playgroud)
当SQL Server 2005和2008存在差异时,此链接帮助我解决了问题 .http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-提供最providermanifesttoken-2008-IS-不同,从2005年-也就是说,在遇到的同期/
右键单击.edmx文件,然后选择"使用XML编辑器打开".Open Entity Framework .edmx文件:
将ProviderManifestToken更改为2008:
看起来它是微软的一个已知问题.