سؤال

لقد كنت ألعب مع Entity Framework 4 ، باستخدام النهج الذي يحركه النموذج لإنشاء البرنامج النصي لقاعدة البيانات من كياناتاتي. هذا رائع ، لكنني لست متأكدًا من كيفية عمل هذا عندما يتعلق الأمر بإصدار قاعدة البيانات. أظن أنه إذا كنت أرغب في استخدام إطار ترحيل من نوع السجل النشط ، يجب أن أعمل في العكس وإنشاء كياناتاتي من قاعدة البيانات الخاصة بي؟ هل هناك أي طريقة لاستخدام النهج الذي يحركه النموذج وإصدار قاعدة البيانات بشكل صحيح؟

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

المحلول

سيأتي هذا قريبًا كحزمة nuget تسمى entityframework.migrations

تم تنفيذ عرض تجريبي من قبل Scott Hanselman في Teched 2011 (متاح على الإنترنت على http://channel9.msdn.com/events/teched/northamerica/2011/dev349). القسم ذي الصلة هو 45 دقيقة في.

باختصار ، بمجرد تثبيت الحزمة ، ستقوم بإدخال ما يلي في وحدة تحكم Package Manager لإنشاء برنامج نصي لتغيير قاعدة البيانات:

migrate -script

تحديث (13 نوفمبر -2011)

بناء ألفا 3 من هذه الحزمة متاح الآن على Nuget. بدلا من استخدام cmdlet migrate -script المذكورة أعلاه ، يستخدم cmdlet Add-Migration <migrationname>. أ السير في استخدامه يمكن العثور عليها على مدونة فريق ADO.NET.

تحديث (14-Feb-2012)

هذه الوظيفة متاحة الآن كجزء من الرئيسي entityframework حزمة nuget, ، بدءا من الإصدار 4.3. و تم تحديث المشي يمكن العثور على EF 4.3 على مدونة ADO.NET Team.

نصائح أخرى

يمكنك المحاولة معالج: هذه أداة لإدارة ترحيل قاعدة البيانات. لا تتكامل مع EF (نظرًا لأنه يكاد يكون من المستحيل الاندماج معها في هذا الصدد) ، ولكنه يقوم بالمهمة.

يذكر Scottgu شيئًا عن هذا في إدخال المدونة:

سنقوم أيضًا بدعم ميزة "الترحيل" مع EF في المستقبل والتي ستتيح لك أتمتة/نصوص مخطط قاعدة البيانات البرمجي برمجيًا.

تعديل

أعتقد أنه قد يشير إلى حزمة توليد قاعدة بيانات مصممي كيان, ، كما أجابها مورتيزا مانافي في آخر حتى الإجابة.

حسنًا ، إذا كنت ترغب في العمل مثل ActivereCord ، فأنت بحاجة إلى العمل مثل ActivereCord. قون

ومع ذلك ، إذا كنت ترغب في استخدام الطراز الأول ولكن لا تزال تستخدم الترحيل ، فسيكون ذلك ممكنًا ، ولكنه سيتطلب عملًا إضافيًا نيابة عنك. سيقوم النموذج الأول بإنشاء برنامج نصي لتغيير قاعدة البيانات. سيتعين عليك استخراج الأجزاء ذات الصلة في الترحيل ، وكذلك كتابة البرامج النصية للتراجع يدويًا. على الرغم من أن هذا ينطوي على بعض العمل اليدوي ، إلا أنه لا يضربني بصعوبة.

أنا أعمل على بديل لمكتبة EF.Migrations - entityframework.schemacompare. يسمح بمقارنة مخطط DB فعليًا مع نموذج كيانات يمثل سياق قاعدة البيانات (EF.Migrations لا تفعل ذلك). يمكن إطلاق هذا إما أثناء تهيئة قاعدة البيانات أو يدويًا عند الطلب. النظر في المثال التالي

#if DEBUG
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>());
#endif

سوف يلقي استثناء أثناء تهيئة قاعدة البيانات التي تصف الاختلافات بين مخطط DB والنموذج إذا تم العثور على مشكلات عدم التوافق. بدلاً من ذلك ، يمكنك العثور على هذه الاختلافات في أي وقت في الكود بهذه الطريقة

using (var ctx = new DatabaseContext())
{
    var issues = ctx.Database.FindCompatibilityIssues();
}

ثم وجود هذه الاختلافات / مشاكل عدم التوافق على الأيدي ، يمكنك إما تحديث مخطط DB أو النموذج.

يعد هذا النهج مفيدًا بشكل خاص عندما تحتاج إلى تحكم كامل في مخطط قاعدة البيانات وتصميم النماذج و/أو العمل في فريق يعمل فيه العديد من أعضاء الفريق على نفس مخطط DB ونموذجه. يمكن استخدامه أيضًا بالإضافة إلى EF.Migrations.

شوكة لي في جيثب: https://github.com/kriasoft/data

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top