“更新模型”向导不适用于Npgsql和visual studio 2013 EntityFramework

时间:2014-01-08 21:40:16

标签: visual-studio entity-framework visual-studio-2013 npgsql edmgen

目前我们使用Visual Studio 2012,EF 5.0和Npgsql 2.0.12.0。

我想升级到Visual Studio 2013和Npgsql 2.0.14.3(我现在对EF 5.0很好)。

目前,我们使用“更新模型”向导,该向导对模式进行任何更改,并将其提供给在VS设计器中查看的edmx文件。我们按照在Npgsql.Provider2中使用DDEX并启动“实验性”Visual Studio实例的笨拙程序来做到这一点。

但是这在Visual Studio 2013中不再有效(在更新生成的注册表项之后)。如果我在machine.config中将DbProvider更改为Npgsql 2.0.14.3,它也不起作用。

如果有人能告诉我他们是否有这个工作以及如何工作,那就太棒了。

作为临时替代方案,我正在考虑使用edmgen.exe从架构更新edmx文件。到目前为止,我已经能够生成.csdl,.ssdl和.mdl文件,但我找不到将所有文件打包成.edmx文件的方法。有人试过这种方法吗?

1 个答案:

答案 0 :(得分:0)

EF Designer需要DDEX提供商才能工作。看起来最初DDEX提供程序仅安装在VS2012的实验版中。安装VS2013时,您没有DDEX提供程序的注册表项,并且EF Designer无法使用您的数据库。

Edmx只是将csdl msl和ssdl粘在一起。假设您使用的是v3模式(即您的csdl位于此命名空间中:xmlns="http://schemas.microsoft.com/ado/2009/11/edm"),您只需将文件内容粘贴到此模板中(我添加了评论哪个文件应粘贴到哪里):

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
  <!-- EF Runtime content -->
  <edmx:Runtime>
    <!-- SSDL content -->
    <edmx:StorageModels>
        <!-- paste SSDL contents here -->
    </edmx:StorageModels>
    <!-- CSDL content -->
    <edmx:ConceptualModels>
        <!-- paste CSDL contents here -->
    </edmx:ConceptualModels>
    <!-- C-S mapping content -->
    <edmx:Mappings>
        <!-- paste MSL contents here -->
    </edmx:Mappings>
  </edmx:Runtime>
  <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
  <edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
    <edmx:Connection>
      <DesignerInfoPropertySet>
        <DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
      </DesignerInfoPropertySet>
    </edmx:Connection>
    <edmx:Options>
      <DesignerInfoPropertySet>
        <DesignerProperty Name="ValidateOnBuild" Value="true" />
        <DesignerProperty Name="EnablePluralization" Value="True" />
        <DesignerProperty Name="CodeGenerationStrategy" Value="None" />
      </DesignerInfoPropertySet>
    </edmx:Options>
    <!-- Diagram content (shape and connector positions) -->
    <edmx:Diagrams>
    </edmx:Diagrams>
  </edmx:Designer>
</edmx:Edmx>