ho i seguenti oggetti di dominio:EF 5.0 Molteplicità On Error semplice mappatura
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;}
...
}
Quando la mappatura persona, tutte queste proprietà sono mappati più o meno allo stesso modo:
HasOptional(p => p.Father).WithMany().HasForeignKey(p => p.FatherId);
HasOptional(p => p.BirthCountry).WithMany().HasForeignKey(p => p.BirthCountryId);
...
Il problema è , con BirthCountry ricevo il seguente errore quando provo ad interrogare persona:
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'.
Se rimuovo la B proprietà irthCountry (e mappatura) tutto funziona bene. Ciò che mi confonde è che BirthCountry è impostato proprio come ogni altra proprietà nullable in Person. Perché le altre proprietà non mi danno lo stesso errore?
Grazie per tutto l'aiuto che puoi offrire!
Sto ancora cercando il modo di aggiungere l'attributo [Required] a ForeignKeyField. Hai una risposta per correggere questo errore? – MasterLuV
In realtà, il mio errore era ** perché ** dell'attributo '[Required]'. Rimuovendo l'attributo risolto il mio problema. Il problema è che non è possibile dichiararlo come un valore nullable int (ciò implica che è annullabile e quindi non richiesto) e aggiungere un attributo che indica a EF che è richiesto. Se è richiesto, non dovresti dichiararlo nullable int. – RHarris
So che rimuovere l'attributo [Richiesto], quindi tutto funziona correttamente. Ma in realtà, la stringa è nullable, non possono essere nulli in EF con l'attributo [Required]. E possiamo ottenere ErrorMessage quando sono nulli o vuoti – MasterLuV