Come posso creare più relazioni con la stessa tabella in EF7 (Core)?

c# entity-framework-core

Domanda

Sto cercando di costruire una migrazione, ma inciampa nella seguente classe:

public class Unit
{
    public int UnitID { get; set; }
    ...
    public Nullable<int> PreviousUnitID { get; set; }

    [ForeignKey("PreviousUnitID")]
    public Unit PreviousUnit { get; set; }

    public Nullable<int> SubsequentUnitID { get; set; }

    [ForeignKey("SubsequentUnitID")]
    public Unit SubsequentUnit { get; set; }
}

"La proprietà di navigazione" "non può essere aggiunta al tipo di entità" Unità "perché esiste già una proprietà di navigazione con lo stesso nome sul tipo di entità" Unità ".

Suppongo che questa navigazione un po 'strana sia la colpa, quindi ho lasciato fuori il resto della classe. Qualcuno sa di un modo per aggirare questo problema?

Grazie!

Risposta accettata

Questo è un problema noto con RC1.

Problema:

Catena di sviluppo: https://github.com/aspnet/EntityFramework/pull/4239

rowanmiller ha commentato l'8 gennaio

Quello sarebbe # 4069 che è riparato nelle nostre costruzioni notturne e spedirà in RC2.


Risposta popolare

Usa la parola chiave virtuale:

public virtual Unit PreviousUnit { get; set; }
public virtual Unit SubsequentUnit { get; set; }

Codice completo:

public class Unit
{
public int UnitID { get; set; }
...
public Nullable<int> PreviousUnitID { get; set; }

[ForeignKey("PreviousUnitID")]
public virtual Unit PreviousUnit { get; set; }

public Nullable<int> SubsequentUnitID { get; set; }

[ForeignKey("SubsequentUnitID")]
public virtual Unit SubsequentUnit { get; set; }
}

Ciò consente anche il caricamento lento delle unità.

modifica: Forse questo potrebbe anche aiutare: https://github.com/aspnet/EntityFramework/issues/3911



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché