如何将EDMX文件版本2.0更新到3.0?

时间:2013-12-19 09:38:51

标签: visual-studio-2012 entity-framework-5

我有一个使用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文件迁移到新版本。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

如果项目面向.NET Framework 4并且您未使用EF6或更新版本,则不应更改EDMX 2.0的版本。

  • 这是因为.NET Framework 4附带的EF不知道 如何处理枚举,空间类型等v3功能。
  • 是的,现在很多机器都安装了.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添加架构声明。
  • 奇怪的是,我认为它重置了EDMX上的自定义工具命名空间,所以我生成的类不在我想要的CLR命名空间中,如果你知道我的意思,我的部分类伙伴就会“断开连接”。