كيف يمكنك التعامل مع "العلاقات" الخلقية بالهجرة؟

StackOverflow https://stackoverflow.com/questions/1469238

سؤال

وفقا لهذا المقال:http://subsonicproject.com/docs/3.0_migrations.

Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.

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

ما لا أعرف كيفية القيام به هو ربط كائنين معا. خذ على سبيل المثال هذين الطبقتين:

public class Disaster
{
    public int DisasterId { get; set; }
    public string Name { get; set; }
    public DateTime? Date { get; set; }
    public IList<Address> Addresses { get; set; }
}

public class Address
{
    public int AddressId { get; set; }
    public string WholeAddressHereForSakeOfBrevity { get; set; }
}

Disaster يحتوي على IList متعددة Addresses التي ضربتها الكارثة. عندما أستخدم SimpleRepository لإضافة هذه إلى قاعدة البيانات مع SimpleRepositoryOptions.RunMigrations, ، يولد الجداول مع جميع الأعمدة، ولكن لا توجد أعمدة أساسية أجنبية كما هو متوقع.

كيف يمكنني ربط هذين معا بحيث عندما اتصل Disaster.Addresses, ، أحصل على قائمة بجميع المصابين Addressesب هل هذا ممكن أو هل يجب علي استخدام activerecord بدلا من ذلك وإنشاء جداول قاعدة البيانات أولا؟ أو هل يجب علي إضافة عمود لمعرف الكارثة إلى Addressب إذا كان الأمر كذلك، كيف تعمل هذه الطريقة على العديد من العلاقات بين العديد من العلاقات؟

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

المحلول

من الممكن - أنت فقط تفعل ذلك باليد هو كل شيء. أضف عقارا إلى كارثة تسمى "العناوين" وجعلها مسمجا <> (أو يمكنك أن تجعله Iqueryable إذا كنت تريد ذلك الحمولة كسول). عند استرداد كارثة ما تبذلونها، تأكد من استرداد عناوينك.

إنه نوع من "دليل" - لكن هذه هي الفكرة. أنا أعمل على تحسينات لذلك آمل أن أدفع في إصدار لاحق.

وقبل أن تسأل لماذا لم أفعل ذلك في المقام الأول :) لأنني لا أعرف إذا كان يجب أن أستخدم الكثير إلى الكثيرين أو 1 - العديد منهم على علاقة الوالد / الطفل. في مثالك، أعتقد أنه ربما 1 إلى الكثيرين ولكن بالنظر إلى ما أعرفه عن العناوين والكوارث (خاصة في فلوريدا) ربما كان من المحتمل أن يكون الكثير للكثيرين.

خلاصة القول - كيف سيكون من الخدمة الذاتية تعرف هذا؟ يمكننا أن نخفف من كلا الكائنات الخاصة ب "الاتجاهات الثنائية"، مما يعني أن العنوان يحتوي على العديد من الكوارث أكثر من الكثيرين بالنسبة للكثيرين (وهو أمر واضح) - ولكن بعد ذلك ليس الترميز السعيد إذا كنت تحب DDD.

أنا أتميل نحو تلك القاعدة مع نوع من التجاوزات التي من شأنها أن يجبر المشكلة. أفكارك حول هذا الترحيب :)

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