Tôi đã các đối tượng miền sau:EF 5.0 Đa dạng Lỗi Trên Simple Mapping
public class Person
{
public int Id {get; set;}
public int? FatherId {get; set;}
public int? MotherId {get; set;}
public int? HomeChurchId {get; set;}
public int? BirthCountryId {get; set;}
public Parent Father {get; set;}
public Parent Mother {get; set;}
public Church HomeChurch {get; set;}
public Country BirthCountry {get; set;}
}
public class Parent
{
public int Id {get; set;}
...
}
public class Church
{
public int Id {get; set;}
...
}
public class Country
{
public int Id {get; set;}
...
}
Khi lập bản đồ Person, tất cả các đặc tính này được ánh xạ khá nhiều theo cùng một cách:
HasOptional(p => p.Father).WithMany().HasForeignKey(p => p.FatherId);
HasOptional(p => p.BirthCountry).WithMany().HasForeignKey(p => p.BirthCountryId);
...
Vấn đề là , với BirthCountry tôi nhận được lỗi sau khi tôi cố truy vấn Người:
One or more validation errors were detected during model generation:
System.Data.Entity.Edm.EdmAssociationType: : Multiplicity conflicts with the
referential constraint in Role 'Person_BirthCountry_Target' in relationship
'Person_BirthCountry'. Because all of the properties in the Dependent Role are
non-nullable, multiplicity of the Principal Role must be '1'.
Nếu tôi xóa B irthCountry tài sản (và lập bản đồ) tất cả mọi thứ hoạt động tốt. Điều gây nhầm lẫn với tôi là BirthCountry được thiết lập giống như mọi thuộc tính không có giá trị khác trong Person. Tại sao các thuộc tính khác không cho tôi lỗi tương tự?
Cảm ơn bạn vì bất kỳ trợ giúp nào bạn có thể cung cấp!
Tôi vẫn đang tìm cách thêm thuộc tính [Bắt buộc] vào ForeignKeyField. Bạn có câu trả lời để sửa lỗi này không? – MasterLuV
Thực ra, lỗi của tôi là ** vì ** thuộc tính '[Bắt buộc]'. Việc xóa thuộc tính đã khắc phục được sự cố của tôi. Vấn đề là, bạn không thể khai báo nó như là một hàm có giá trị rỗng (ngụ ý rằng nó là nullable và do đó không bắt buộc) và thêm một thuộc tính cho EF biết rằng nó là bắt buộc. Nếu nó được yêu cầu, thì bạn không nên khai báo nó là một int vô giá trị. – RHarris
Tôi biết rằng loại bỏ [Bắt buộc] thuộc tính sau đó tất cả mọi thứ hoạt động tốt. Nhưng trên thực tế, chuỗi là vô giá trị, chúng có thể không có khả năng rỗng trong EF với thuộc tính [Bắt buộc]. Và chúng ta có thể lấy ErrorMessage khi chúng rỗng hoặc rỗng – MasterLuV