שאלת Entity framework

שאלת Entity framework

שלום וברכה, אני זקוק לעזרה ואודה למי שיעזור.

נניח מודל פשוט של סוכנים, ולקוחות:
public class PersonCommon{
public int Id { get; set; }
public string Name { get; set; }}public class Customer : PersonCommon{ public string SomeCustomerProperty { get; set; } public int AgentId { get; set; } public virtual Agent Agent { get; set; }}public class Agent : PersonCommon{ public Agent() { this.Customers = new HashSet<Customer>(); } public string SomeAgentProperty { get; set; } public virtual ICollection<Customer> Customers { get; set; }}

הקונטקסט נראה כך:

public class MyContext : DbContext{
public MyContext()
: base("MyDbConStr")
{ } public DbSet<PersonCommon> People { get; set; } public DbSet<Customer> Customers { get; set; } public DbSet<Agent> Agents { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<PersonCommon>().ToTable("PeopleCommon"); modelBuilder.Entity<Customer>().ToTable("Customers"); modelBuilder.Entity<Agent>().ToTable("Agents"); }

התוצאה היא דטהבייס נחמד ויפה, כמו בתמונה המצורפת.
דבר אחד לא הצלחתי לממש: אני רוצה שמחיקת סוכן מהקונקסט, תמחק אותו ואת כל לקוחותיו [Cascade]. אבל לא הצלחתי, והלקוחות לא נמחקים, ומחיקת הסוכן נכשלת בגלל הפרת מפתח.

אני יודע איך לתקן את זה בSql, אבל אני רוצה לדעת איך עושים את זה בCode first.
תודה רבה מכל הלב!

 
למרבה התמיהה

זה לא עבד. המיגריישן שהוספתי, היה ריק.
נאלצתי להוסיף במיגריישן מחיקה של הForeignKey ויצירה מחדש עם cascadeDelete: true.
מוזר, אבל ככה זה.

בכל אופן, תודה רבה!
 

YonaSwarz

New member
ידיד ליחיד ?

לפי מה שהבנתי יש לך people comon יחיד ליחיד ?

זה לא הגיוני המקרה הזה , איך אתה רוצה למחוק משהו ,?

people comon צריך להיות רבים לרבים או אחד לרבים מקושר לאחרים , אם הוא אחד לאחד אז המבנה הוא לא נכון
 

YonaSwarz

New member
אסביר

people comon
לא אמור לרשת מסוכנים ולא מלקוחות ......
למה?! בגלל שאנשי קשר הם לא יכולים להיות סוכנים או לקוחות , ואם כן אז צריך לעשות סדר בהגדרות שלך ובאיפיון שלך

... כדי להתייחס יותר טוב אז צריך שתגדיר יותר טוב מה אתה רוצה אולי אסביר לך

לפי מה שאני הבנתי אתה יש לך סוכנים ולקוחות , ויש אנשי קשר משותפים לפעמים , אם זה נכון אז אנשי קשר צריכים להיות רבים לרבים או אחד לרבים
ובטח שלא לרשת מקלוחות או מסוכנים
 
למעלה