7

Bunu, karmaşık türleri yerleştirmekten ziyade her şeyi tek bir varlık haline getirerek çözebileceğimi biliyorum (yalnızca 1-1 eşleştirmeleri gibi), ancak gruplama şeklini beğeniyorum oluşturulan OM'deki özellikler.EF 4.2, CodeFirst - Karmaşık türdeki gezinme özelliği

"CrmData" karmaşık türünü içeren bir Müşteri var. CrmData öğesinin karmaşık bir türü vardır.

public class Customer { 
    [Required] 
    public CrmSpecificData CrmData { get; set; } 
} 
[ComplexType] 
public class CrmSpecificData { 
    [MaxLength(40)] 
    public string FirstName { get; set; } 

    [MaxLength(80)] 
    public string LastName { get; set; } 

    public Address Address { get; set; } 
} 
[ComplexType] 
public class Address { 
    [MaxLength(150)] 
    public string Address1 { get; set; } 

    [MaxLength(150)] 
    public string Address2 { get; set; } 

    [MaxLength(100)] 
    public string City { get; set; } 

    [MaxLength(15)] 
    public string PostalCode { get; set; } 

    public StateProvince StateOrProvince { get; set; } 

    public virtual CountryRegion CountryOrRegion { get; set; } 
} 

StateProvince & CountryRegion türleri (AdventureWorks örnek DB çalışmasına benzeyen) benim DB varlıklardır. Sorun, EF modeli oluşturmaya çalıştığında, şu hatalarla karşılaşır:

'MyCo.Crm.Entities.StateProvince' zaten bir varlık türü olarak yapılandırılmıştır. Karmaşık bir tür olarak yeniden yapılandırılamaz ..

StateProvince'ı karmaşık bir tür yapmayı denedim, ancak bu sorunu çözmüyor. Fikirler?

public class StateProvince { 
    [Key] 
    public int StateProvinceId { get; set; } 

    [MaxLength(3)] 
    public string StateProvinceCode { get; set; } 

    [MaxLength(50)] 
    public string Name { get; set; } 
} 

cevap

14

Kompleks türleri cannot contain navigation properties. Gezinme özellikleri yalnızca varlıkta tanımlanabilir. Yani yapmanız gerekir ya:

  • Kullanım table splitting yerine karmaşık tipleri ancak başka sorunlara neden olur - örneğin o tür yuva mümkün olmayacak ve bunları yüklemek için tembel/istekli yükleme kullanmak zorunda kalacaktır. Bunu yayınlanmıştır
  • Taşı failright olmadan ana varlık
+0

tüm navigasyon özelliklerini sonra nihayet cevabını sözü başka konu buldum ... benim devlet ve ülke özellikleri dizeleri yapacağız düşünüyorum bu durumla ve Kodları, sahip olduğum modeli beğendiğim gibi aramalarla ilgilenmeyi tercih ediyorum. Sadece olumsuz olan doğrulama parçası, ama bunu başka yollarla halledebilirim. –