我有一个使用Entity Framework 5的VS-2012解决方案。 EDMX文件是2.0版:
<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
当我使用VS和新的EDMX文件创建一个新项目时,它将是3.0版本。 由于我在使用2.0版本的设计器中没有工作功能时遇到一些问题,我想将EDMX文件迁移到新版本。
我该怎么做?
答案 0 :(得分:1)
如果项目面向.NET Framework 4并且您未使用EF6或更新版本,则不应更改EDMX 2.0的版本。
是的,现在很多机器都安装了.NET Framework 4.5 或者更新,它将用于运行您的项目,即使它针对.NET Framework 4(.NET Framework 4.5和更新版本的就地升级)。
但是,如果您更改EDMX的版本并碰巧运行您的应用程序 只有.NET Framework 4的机器会当场死亡。
如果您需要迁移到EDMX 3,则需要将项目从.NET Framework 4重新定位到.NET Framework 4.5,这将自动升级EDMX的版本。如果要在.NET Framework 4上使用EDMX 3功能,唯一的方法是使用EF6或更高版本。新设计师确实支持这种情况 - 您可以阅读此here。
答案 1 :(得分:0)
如果通过添加“现有项目”添加edmx文件,然后尝试打开该文件,则应该给出错误。单击“修改”然后它应该打开。转到属性(F4),将“代码生成策略”更改为“T4”,然后保存EDMX文件。
然后你可以用文本编辑器打开EDMX文件,并确保第二行有edmx:Edmx Version =“3.0”
答案 2 :(得分:0)
我最终做的是创建一个新的空EF模型;一个新的Test.edmx文件。
然后我将值复制并粘贴到具有架构属性的元素中,例如从我的原始EDMX到新的EDMX:
<edmx:StorageModels>
<Schema xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
Namespace="Entities.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" >
... paste contents from original EDMX ...
</Schema>
</edmx:StorageModels>
然后我将整个东西复制粘贴在我原来的EDMX上并删除了测试版。显然使用源代码控制来比较和检查混乱。
我需要解决一些问题:
Namespace="Test"
到原来的任何东西。ProviderManifestToken
xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
元素是什么时,为store:Type
添加架构声明。