Pergunta

Atualmente usamos Visual Studio 2012, EF 5.0 e Npgsql 2.0.12.0.

Gostaria de atualizar para o Visual Studio 2013 e Npgsql 2.0.14.3 (estou bem com o EF 5.0 por enquanto).

Atualmente usamos o assistente "Atualizar modelo", que pega todas as alterações no esquema e as alimenta no arquivo edmx que é visualizado no designer do VS.Fazemos isso seguindo o procedimento estranho de usar DDEX em Npgsql.Provider2 e iniciar a instância "experimental" do Visual Studio.

Mas isso não funciona mais no Visual Studio 2013 (após atualizar as entradas de registro geradas).Também não funciona se eu alterar o DbProvider para Npgsql 2.0.14.3 em machine.config.

Seria excelente se alguém pudesse me dizer se fez isso funcionar e como.

Como alternativa temporária, estou pensando em atualizar o arquivo edmx do esquema usando edmgen.exe.Até agora, consegui gerar os arquivos .csdl, .ssdl e .mdl, mas não consigo encontrar uma maneira de empacotar todos eles em um arquivo .edmx.Alguém já tentou essa abordagem?

Foi útil?

Solução

O EF Designer precisa de um provedor DDEX para poder funcionar.Parece que originalmente o provedor DDEX foi instalado apenas na sua versão experimental do VS2012.Ao instalar o VS2013, você não possui as chaves de registro do provedor DDEX e o EF Designer não pode funcionar com seu banco de dados.

Edmx está apenas colando csdl msl e ssdl.Supondo que você esteja usando esquemas v3 (ou seja,seu csdl está neste namespace: xmlns="http://schemas.microsoft.com/ado/2009/11/edm") você pode simplesmente colar o conteúdo dos arquivos neste modelo (adicionei comentários sobre qual arquivo deve ser colado e onde):

<?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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top