Ecco la situazione. Esistono due tipi di ElectricConsumer
ovvero CommercialConsumers
& I componenti nazionali (Quaters) e uno Quater
sono assegnati a uno Employee
. Di seguito è riportato il mio codice ma encountring l'eccezione.Impossibile determinare la fine principale di un'associazione tra i tipi
impossibile determinare il fine principale di un'associazione tra i tipi EFcodefirstDemo.CodeFistModel.Quater e EFcodefirstDemo.CodeFistModel.Employee. La fine principale di questa associazione deve essere configurata in modo esplicito utilizzando l'API della relazione o le annotazioni di dati.
So che sto facendo degli errori alcuni perché sono nuovo di EF. Spero che risolverai questo problema.
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; }
}
Cosa fare in caso di uno-a-(zero-or-one)? –
L'entità è richiesta nell'entità dipendente, pertanto quando si crea un'istanza dell'entità dipendente è necessario impostare la proprietà di navigazione con un'istanza di principal. Se si crea un'istanza di principal non è necessario impostare la proprietà di navigazione dipendente, in questo caso l'entità può esistere senza la dipendenza, quindi alla fine è una relazione da uno a zero – octavioccl