identity + code first

identity + code first

מה קורה עם שני אלה ביחד?
אני רוצה להשתמש ב Identity כדי לנהל משתמשים, וב code first כדי ליצור את הטבלאות ולא להשתמש יותר ב edmx המשוקץ. הבעיה שטבלאות המשתמשים נוצרות לבד, וככה עוקפות את הקוד שאני כותב ליצירת טבלאות. מה הדרך הנכונה לעשות את זה?
אגב, אני רוצה להשתמש ב TPH inheritance כפי שמוסבר כאן:

http://www.asp.net/mvc/overview/get...ntity-framework-in-an-asp-net-mvc-application

כלומר, שיש טבלת user לדוגמה (נוצרה על ידי identity ומכילה אינפורמציה בסיסית. עליה אני מוסיף עוד כמה שדות ויוצר טבלה חדשה (יורשת) בשם למשל student שהוא יוזר רגיל פלוס כמה שדות, וטבלה אחרת בשם Instructor שגם הוא משתמש רגיל פלוס דברים אחרים. (ובעצם אם תסתכל על ה DB, תראה טבלה אחת. השמות הנפרדים הם רק לצורך הנוחות בתכנות)
מה הדרך הקלה לעשות את זה?
 
תשובה

אכן CodeOnly זה דבר טוב והוא עובד היטב גם בשיטת DatabaseFirst.
כשספרתי פה בפורום שהדיזיינר הולך לפח כמעט התעלפת מפחד. לכן אני מופתע לשמוע שהedmx "משוקץ".
כשדוחפים את התינוק לצאת ממעי אמו, הוא פוחד ובוכה. טוב לו ברחם והוא חושש מהסכנות בחוץ. אבל אחר כך, הוא לא ירצה לחזור למעי אמו בשום מחיר...

לגבי Identity: נדמה לי שאם השמות תואמים למוסכמות, EF יזהה לבד שהשדה הוא Identity.
אם לא, אפשר בשתי דרכים: להצמיד DatabaseGeneratedAttribute למאפיין הIdentity, או להוסיף לקונטקסט את הקוד הבא:
protected override void OnModelCreating(DbModelBuilder modelBuilder){
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>() .Property(u => u.UserId) .HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);}

בנוגע לירושה, ראה כאן https://msdn.microsoft.com/en-us/data/jj591617#2.4
 
למעלה