Is there a way to have multiple instances of a complex type inside the same model using the Fluent api model constructor?
public class Contact { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public Address PersonalAddress { get; set; } public Address BusinessAddress { get; set; } } public class Address { public string Street{ get; set; } public string City{ get; set; } public string PostalCode{ get; set; } } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Configurations.Add(new ContactConfiguration()); modelBuilder.Configurations.Add(new AddressConfiguration()); }
==================================================== ==================================
public class AddressConfiguration : ComplexTypeConfiguration<Address> { public AddressConfiguration() {
EDIT (FIND A SOLUTION)
If several instances of a complex type class are used in the same CF model, the configuration of these classes is set at the CF model level as follows:
public class ContactConfiguration : EntityTypeConfiguration<Contact> { public ContactConfiguration() { //props for PersonalAddress instance of Address complex type class this.Property(t => t.PersonalAddress.Address.Street) .HasColumnName("PersonalAddressStreet"); this.Property(t => t.PersonalAddress.Address.PostalCode) .HasColumnName("PersonalAddressPostalCode"); this.Property(t => t.PersonalAddress.Address.City) .HasColumnName("PersonalAddressCity"); //props for BusinessAddress instance of Address complex type class this.Property(t => t.BusinessAddress.Address.Street) .HasColumnName("BusinessAddressStreet"); this.Property(t => t.BusinessAddress.Address.PostalCode) .HasColumnName("BusinessAddressPostalCode"); this.Property(t => t.BusinessAddress.Address.City) .HasColumnName("BusinessAddressCity"); } }
source share