Đây là tình huống. Có hai loại ElectricConsumer
tức là CommercialConsumers
& DomesticConsumers (Quaters) và một Quater
được cấp cho một Employee
. Dưới đây là mã của tôi nhưng có ngoại lệ.Không thể xác định kết thúc chính của liên kết giữa các loại
Không thể xác định khi kết thúc chính của một mối liên hệ giữa các loại EFcodefirstDemo.CodeFistModel.Quater và EFcodefirstDemo.CodeFistModel.Employee. Phần đầu chính của liên kết này phải được định cấu hình rõ ràng bằng cách sử dụng API thông thạo quan hệ hoặc chú thích dữ liệu.
Tôi biết tôi đang phạm sai lầm một số nơi vì tôi mới tham gia EF. Hy vọng bạn sẽ giải quyết vấn đề này.
public class Employee
{
public Employee()
{
MeterReadings = new List<MeterReading>();
MeterReadings = new List<MeterReading>();
}
[Key]
[Column(Order = 1)]
public int EmployeeID { get; set; }
[Key]
[Column(Order = 2)]
public Int64 EmployeeNo { get; set; }
public String EmployeeName { get; set; }
[DefaultValue(true)]
public bool Gender { get; set; }
[DefaultValue(true)]
public bool HasResidence { get; set; }
public bool IsInDivision { get; set; }
public int? ManagerID { get; set; }
public virtual Employee Manager { get; set; }
public virtual Department Deparment { get; set; }
public int QuaterID { get; set; }
[ForeignKey("QuaterID")]
public virtual Quater Quater { get; set; }
public virtual ICollection<MeterReading> MeterReadings { get; set; }
}
public partial class ElectricConsumer
{
[Key]
public int ElectricConsumerID { get; set; }
public String Area { get; set; }
[MaxLength(350)]
public String Address { get; set; }
public virtual ICollection< Meter> Meters { get; set; }
}
public partial class Quater : ElectricConsumer
{
public Quater()
{
// Meters = new List<Meter>();
}
public int QuaterNo { get; set; }
public int QuaterPortionNo { get; set; }
public virtual Employee Employee { get; set; }
}
public partial class CommericalCustomer : ElectricConsumer
{
public CommericalCustomer()
{
// Meters = new List<Meter>();
}
public String Name { get; set; }
[Index("NicIndex", IsUnique = true)]
public Int64 NIC { get; set; }
public int ShopNo { get; set; }
}
public partial class Meter
{
public Meter()
{
InstalledDate = DateTime.Now;
MeterReadings = new List<MeterReading>();
ElectricBills = new List<ElectricBill>();
}
[Key]
[Column(Order = 1)]
public int MeterID { get; set; }
[Key]
[Column(Order = 2)]
public int MeterNo { get; set; }
[DefaultValue(1)]
public int Phase { get; set; }
public DateTime InstalledDate { get; set; }
[DefaultValue(true)]
public bool IsOperating { get; set; }
public virtual ElectricConsumer ElectricConsumer { get; set; }
public virtual ICollection<MeterReading> MeterReadings { get; set; }
public virtual ICollection<ElectricBill> ElectricBills { get; set; }
}
Phải làm gì trong trường hợp một-to- (zero-hoặc-one)? –
Hiệu trưởng là bắt buộc trong thực thể phụ thuộc, vì vậy khi bạn tạo một cá thể của thực thể phụ thuộc, bạn phải đặt thuộc tính điều hướng với một thể hiện của hiệu trưởng. Nếu bạn tạo một thể hiện của hiệu trưởng, bạn không cần phải thiết lập thuộc tính điều hướng phụ thuộc như vậy, trong trường hợp này hiệu trưởng có thể tồn tại mà không có sự phụ thuộc, do đó, ở cuối đó là một mối quan hệ một đến một – octavioccl