שתי שאלות על code first

שתי שאלות על code first

1. מה עושה AutomaticMigrationsEnabled ?
אני ניחשתי שקביעה שלו ל true תגרום לאוטומציה של התהליך: add-migration, update database ומסתבר שממש לא. אני עושה שינויים בקבצים, והריצה נכשלת עד שאני לא עושה ידנית את שני השלבים הנל. אז מה כן הוא עושה הבחור?

2. מה קורה בפרודקשן? איך אני גורם לדטבייס בפרודקשן להתעדכן בכל אותם קבצי עדכון שעדיין לא עודכנו בו? האם זה אוטומטי? ידני? מה עושים במקרה של כמה שרתי sql במקביל? האם אפשר לקבל קבצי sql שה DBA יהיה מרוצה ויריץ אותם ידנית?
 

nocgod

New member
2 אגורות שלי

1. הוא עושה את מה שציפית שהוא יעשה אבל קצת שונה. הוא לא מייצר קובצי מיגרציה ואז update אלא מנסה לבצע את השינוי ב schema לבד. השאלה שלי: האם עשיתי Enable migrations? נוספה לך ב DB הטבלה של המיגרציות?
בכללי מומלץ לא להשתמש ב automigrations (במיוחד לא בסביבת production)

2. בפרודקשין הסיפור מורכב, והעדיפות היא שלא תעשה מיגרציות אוטומטיות בכלל. יש initialization policy שאומר לEF שאם יש migrations בתיקייה שלא בוצעו על ה DB, לבצע אותם בעליה של התוכנה. הבעיה עם זה היא שאם יש לך replication של service כלשהו ואתה עושה deployment אחד אחד כדי להמנע מ downtime אז הפוליסה הזאת מזהה אם יש עדיין הבדל בין הסכמה הקיימת בDB לבין הmodel שלך ואז הסרוויס הראשון יעלה יעשה מיגרציות ויעבוד, הסרוויס השני לא יוכל לגשת יותר ל DB כי הסכמה לא תתאם למודלים שיש לו, עד שתעדכן את הסרוויס השני.

תציץ פה כדי להכיר Db Initializers שונים. אפשר גם לכוון אותם דרך ה app/web.config (ואז לעשות initializers שונים בהסתמך על הסביבה בה אתה עובד)
 
למעלה