EF7 - Nome colonna personalizzato per la relazione HasOne

entity-framework entity-framework-core

Domanda

Come si specifica un nome di colonna personalizzato con una relazione HasOne in EF7?

Considera le seguenti classi di esempio:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

E questa configurazione fluente:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

Che porta a questa configurazione del DB:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

Come posso specificare un nome di colonna diverso da "AddressId" nella tabella House? Non riesco a trovare un metodo simile a HasColumnName come se esistesse su proprietà non di navigazione.

Sto utilizzando Entity Framework 7 RC1-Final.

Risposta popolare

È possibile utilizzare Data Annotations per configurare la chiave esterna della relazione.

public int AddressID { get; set; }

[ForeignKey("AddressID")]
public Address Address { get; set; }

Ciò richiede una proprietà che verrà utilizzata come chiave esterna nella relazione. Inoltre, tieni presente che è consigliabile disporre di una chiave esterna esplicita per le tue relazioni diversa da una chiave esterna shadow. Ciò impedirà di avere molti problemi durante l'inserimento / l'aggiornamento poiché non è necessario impostare l'intero Address proprietà di navigazione per salvare un'entità House . Vedi il problema qui

Non testato, ma forse potrebbe funzionare (non riesco a trovare un modo per installare EF7 in questo momento)

public int AddressID { get; set; }

[ForeignKey("AddressID")]
public Address Address { get; set; }

Puoi controllare qui per ulteriori esempi: Foreign Key Relationships EF7




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é