क्या फ्लुएंट एपीआई मॉडल निर्माता का उपयोग कर एक ही मॉडल के अंदर जटिल प्रकार के जटिल उदाहरण होने का कोई तरीका है?इकाई फ्रेमवर्क जटिल प्रकार एक मॉडल में कई उदाहरण?
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()
{
//props
this.Property(t => t.Street)
.IsOptional()
.HasColumnName("AddressStreet")
.HasMaxLength(1024);
this.Property(t => t.PostalCode)
.IsOptional()
.HasColumnName("AddressPostalCode")
.HasMaxLength(64);
this.Property(t => t.City)
.IsOptional()
.HasColumnName("AddressCity")
.HasMaxLength(512);
}
}
संपादित करें (FOUND समाधान)
कई जटिल प्रकार वर्ग उदाहरणों में एक ही सीएफ मॉडल में उपयोग किया जाता है, तो इन वर्गों के विन्यास इस तरह सीएफ मॉडल स्तर पर सेट है:
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");
}
}