שאלת Entity framework
שלום וברכה, אני זקוק לעזרה ואודה למי שיעזור.
נניח מודל פשוט של סוכנים, ולקוחות:
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 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.
תודה רבה מכל הלב!
שלום וברכה, אני זקוק לעזרה ואודה למי שיעזור.
נניח מודל פשוט של סוכנים, ולקוחות:
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.
תודה רבה מכל הלב!