7

Tôi biết tôi có thể giải quyết điều này bằng cách đẩy mọi thứ vào một thực thể duy nhất thay vì lồng các loại phức tạp (vì chúng chỉ là 1-1 ánh xạ), nhưng tôi thích cách nó nhóm thuộc tính trong OM được tạo.EF 4.2, CodeFirst - Thuộc tính điều hướng bên trong một loại phức tạp

Tôi có một thực thể Khách hàng chứa loại phức tạp "CrmData". Thực thể CrmData có một loại địa chỉ phức tạp.

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; } 
} 

StateRegion types là các thực thể trong DB của tôi (tương tự như cách mẫu AdventureWorks DB hoạt động). Vấn đề là khi EF cố gắng tạo mô hình, nó không thành công với:

Loại 'MyCo.Crm.Entities.StateProvince' đã được định cấu hình làm loại thực thể. Nó không thể được cấu hình lại như một loại phức tạp.

Tôi đã cố gắng làm cho StateProvince trở thành một kiểu phức tạp nhưng điều đó không giải quyết được vấn đề. Ý tưởng?

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

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

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

Trả lời

14

Loại phức hợp cannot contain navigation properties. Thuộc tính điều hướng chỉ có thể được xác định trong thực thể. Vì vậy, bạn phải:

  • Sử dụng table splitting thay vì các loại phức tạp nhưng nó sẽ gây ra vấn đề khác - ví dụ, bạn sẽ không thể tổ các loại và bạn sẽ phải sử dụng háo hức/lười biếng tải để tải chúng.
  • Move tất cả các thuộc tính điều hướng để các tổ chức chính
+0

Without failright sau khi tôi đăng này cuối cùng tôi tìm thấy một chủ đề đó nêu câu trả lời của bạn ... đối với trường hợp này, tôi nghĩ rằng tôi sẽ làm cho tính chất nhà nước & nước các chuỗi của tôi và lưu trữ các mã như tôi muốn đối phó với các tra cứu như tôi thích mô hình tôi có. Nhược điểm duy nhất là phần xác nhận, nhưng tôi có thể xử lý nó theo những cách khác. –

Các vấn đề liên quan