c# - mvc - entity framework crud



الترقية من Entity Framework 5 إلى 6 (2)

بعد ترقية مشروعنا من استخدام Entity Framework 5 إلى Entity Framework 6 (على الرغم من وظيفة تحديث NuGets) أتلقى الخطأ التالي في فئة الكيانات التي تم إنشاؤها:

خطأ 1 النوع أو اسم مساحة الاسم 'كائنات' غير موجود في مساحة الاسم 'System.Data'
(هل تفتقد مرجع التجميع؟)

أنا أفهم أن هذا بسبب تغيير مساحة الاسم ويمكنني إصلاح الخطأ يدويًا عن طريق تغيير المستوردات من: using System.Data.Objects; using System.Data.Objects.DataClasses; إلى: using System.Data.Entity.Core.Objects;

ومع ذلك يتم إنشاء الملف حتى أحتاج إلى إعادة تطبيق هذا الإصلاح بعد كل Update model from Database . هل هناك شيء إضافي لتغييره للحصول على EF لإنشاء النموذج بدون هذا الخطأ.


أعتقد أن مشكلتك هي أن قوالب T4 الخاصة بك ، التي تولد الامتيازات والسياق لا تزال في الإصدار 5 من EF.

أولاً ، يجب حذف عناصر إنشاء التعليمات البرمجية الحالية ، الموجودة في التعليمة البرمجية خلف النموذج ، وهي <Modelname>.Context.tt و <Modelname>.tt .Next إضافة مولد رمز جديد لـ 6 الإصدار EF مع Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator .


هذه هي تجربتي حول كيفية ترقية Entity Framework v5 إلى v6 بنجاح من أجل:

  • خادم قاعدة البيانات.
  • C # و Visual Studio 2012.
  • قاعدة البيانات أولا.

المختصرات:

  • EF5 = Entity Framework v5.
  • EF6 = Entity Framework v6.

قائمة تدقيق:

  1. تم تضمين EF5 في صميم. NET 4.5 ، في حين أن EF6 تم إزاحته ، وهو مفتوح المصدر.
    • هذا يعني أنه يجب عليك إضافة تجميعات EF6 الجديدة إلى جميع المشاريع ذات الصلة في الحل ، وخاصة مشروع الدخول.
    • هذا يعني أنه يجب عليك إزالة التجميع System.Entity من كافة المشاريع ، حيث يشير ذلك إلى EF5.
  2. يحتوي EF5 على .dll فردي "EntityFramework.dll" ، بينما يحتوي EF6 على اثنين .dlls:
    • إطار كيان
    • EntityFramework.SqlServer
  3. يتطلب EF6 تغييرات على app.config. أفضل طريقة لإجراء هذه التغييرات هي النقر بزر الماوس الأيمن على الحل ، وتحديد "إدارة حزم NuGet للحلول" ، والبحث عن "EntityFramework" وتثبيت الإصدار 6.1.6 من Entity Framework في جميع المشروعات ذات الصلة ، ولا سيما مشروع الإدخال. تأكد من إلغاء تثبيت أي حزم NuGet لـ EF5 Framework من جميع المشاريع. سيؤدي هذا إلى تحديث ملفات app.config تلقائيًا حتى تكون صحيحة.
  4. افحص جميع ملفات app.config للإحالات إلى EF5 ، وقم بإزالتها.
  5. تم تغيير مساحات الأسماء:
    • إزالة خطوط C # using System.Data.EntityClient; وهو مرجع EF5.
    • إضافة سطر C # using System.Data.Entity.Core.EntityClient; وهو الصحيح لـ EF6.

لا يزال عالقا؟ قائمة التحقق هذه هي ويكي مجتمع ، لا تتردد في تحرير قائمة المراجعة هذه لمساعدة النفوس الأخرى التعيسة التي لا تزال تضرب رؤوسها بالحائط من الطوب الذي يمكن أن يكون تكوين EF6.

تحديث 2016-02-15

يرجى استكشاف خيارات أخرى قبل النظر في EF. إنها أبطأ بمعدل 100 مرة من الخيارات الأخرى ، فهي معقدة أكثر من اللازم لما توفره ، وكيان واجهة المستخدم الرسومية مليء بالأخطاء ولديه مشكلات غريبة في الاستخدام ، وسنضطر إلى إزالة جميع رموز EF6 واستبدالها بشيء يأخذ أقل من 5 دقائق لإجراء استعلام يستغرق 5 ثوانٍ في Dapper.





ef-database-first