В настоящее время мы используем Visual Studio 2012, EF 5.0 и Npgsql 2.0.12.0.
Я хочу перейти на Visual Studio 2013 и Npgsql 2.0.14.3 (пока меня устраивает EF 5.0).
В настоящее время мы используем мастер «Обновить модель», который принимает любые изменения в схеме и передает их в файл edmx, который просматривается в конструкторе VS. Мы делаем это, выполнив неудобную процедуру использования DDEX в Npgsql.Provider2 и запустив «экспериментальный» экземпляр Visual Studio.
Но это больше не работает в Visual Studio 2013 (после обновления созданных записей реестра). Также это не сработает, если я изменю DbProvider на Npgsql 2.0.14.3 в machine.config.
Было бы замечательно, если бы кто-нибудь мог сказать мне, работает ли это и как.
В качестве временной альтернативы я рассматриваю возможность обновления файла edmx из схемы с помощью edmgen.exe. Пока мне удалось сгенерировать файлы .csdl, .ssdl и .mdl, но я не могу найти способ упаковать их все в файл .edmx. Кто-нибудь пробовал такой подход?
1 ответ
Конструктору EF необходим поставщик DDEX для работы. Похоже, изначально поставщик DDEX был установлен только в вашей экспериментальной версии VS2012. При установке VS2013 у вас нет ключей реестра для поставщика DDEX, и конструктор EF не может работать с вашей базой данных.
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>
Похожие вопросы
Новые вопросы
visual-studio
Используйте этот тег, если у вас есть конкретный вопрос о функциях и возможностях Visual Studio. НЕ используйте этот тег для вопросов, касающихся кода, который просто был написан в Visual Studio. Подумайте о том, чтобы пометить точную область технологий, на которую ссылается ваш вопрос, а также пометить более конкретную версию Visual Studio. Пожалуйста, укажите вашу точную версию VS, редакцию и уровень обновления в вашем вопросе.