1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| public class Address { [Key] public int Id { get; set; } public string Line1 { get; set; } public string Line2 { get; set; } public string Line3 { get; set; }
public virtual Customer Customer { get; set; } public virtual StoreLocation StoreLocation { get; set; } public virtual Employee Employee { get; set; }
public int? CustomerId { get; set; }
public int? EmployeeId { get; set; } }
public class Customer { [Key] public int Id { get; set; } public string Name { get; set; } public virtual ICollection<Address> Addresses { get; set; } }
public class StoreLocation { [Key] public int Id { get; set; } public string ShortCode { get; set; } public string Description { get; set; } public virtual Address Address { get; set; } }
public class Employee { [Key] public int Id { get; set; } public string Name { get; set; } public DateTime Dob { get; set; } public virtual ICollection<Address> Addresses { get; set; } }
public class ManyOneToManyContext : DbContext {
static ManyOneToManyContext() { Database.SetInitializer<ManyOneToManyContext>(new ManyOneToManyInitializer()); }
public DbSet<Address> Addresses { get; set; } public DbSet<Customer> Customers { get; set; } public DbSet<StoreLocation> StoreLocations { get; set; } public DbSet<Employee> Employees { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
modelBuilder.Entity<Customer>().HasMany(c => c.Addresses).WithOptional(a => a.Customer).HasForeignKey(a => a.CustomerId);
modelBuilder.Entity<StoreLocation>().HasRequired(s => s.Address).WithOptional(a => a.StoreLocation).Map(t => t.MapKey("AddressId"));
modelBuilder.Entity<Employee>().HasMany(e => e.Addresses).WithOptional(a => a.Employee).HasForeignKey(e => e.EmployeeId); } }
public class ManyOneToManyInitializer : DropCreateDatabaseAlways<ManyOneToManyContext> { protected override void Seed(ManyOneToManyContext context) {
} }
|