سؤال

نستخدم حاليًا 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.وقد حاول أحد هذا النهج؟

هل كانت مفيدة؟

المحلول

يحتاج مصمم 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top