2015-09-08 17 views
9

sto ricevendo il seguente errore: EFconflitti Multiplicity con il vincolo referenziale

Agent_MailingAddress: : Multiplicity conflicts with the referential constraint in Role 'Agent_MailingAddress_Target' in relationship 'Agent_MailingAddress'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be 1

E sembra gettare questo quando si esegue base.OnModelCreating(modelBuilder).

Qui sono i miei modelli. FWIW, Agent eredita da una classe User.

public class Agent 
{ 
    public int AgentId { get; set; } 
    public int PrimaryAddressId { get; set; } 
    public Address PrimaryAddress { get; set; } 
    public int? MailingAddressId { get; set; } 
    public Address MailingAddress { get; set; } 
} 

public class Address 
{ 
    public int AddressId { get; set; } 
    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
} 

Credo che il problema abbia a che fare con il fatto che Agent ha più di una proprietà di tipo Address e forse anche perché uno di loro è annullabile. Ho fatto qualche ricerca, ma non riesco a trovare una risposta.

presumo alterare il mio modello Agent di avere una unica proprietà di tipo List<Address> che avrebbe utilizzato una tabella di ricerca UserAddresses sarebbe risolvere l'errore, ma io preferirei mantenere l'attuale modello e non.

Come posso risolvere questo errore? Grazie in anticipo.

+2

Dove si trova l'errore? – Artiom

+0

Il codice che hai postato sembra ok. Il problema deve essere il modo in cui lo stai usando. Mostra il codice in cui si verifica l'errore e pubblica il messaggio di eccezione completo. – user1666620

+0

Scusate ragazzi. Aggiornato. – im1dermike

risposta

12

Ciò può accadere se la configurazione e il modello non corrispondono.

Diciamo che nella configurazione del db si dispone di una regola come questa:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Agent>().HasRequired(x=>x.MailingAddress); 
    //.. 

Ma nel modello dici che MailingAddress è facoltativo:

public int? MailingAddressId { get; set; } 

I believe the issue has something to do with the fact that Agent has more than one property of type Address and possibly also because one of them is nullable

Non è il caso.

+0

Mi sento un idiota. AgentConfiguration aveva 'Property (p => p.MailingAddressId) .IsRequired();' – im1dermike

Problemi correlati