Entity Framework 7: un tipo anonimo non può avere più proprietà con lo stesso nome

entity-framework entity-framework-core

Domanda

In passato ho avuto problemi ( 1 , 2 , 3 ) con Entity Framework durante lo scambio tra macchine di sviluppo, quindi volevo ottenere qualcosa di semplice in esecuzione con Entity Framework 7 RC1 Update 1 per vedere se le cose fossero più facili.

Ho copiato localmente un database Azure e poi ho usato il comando DNX

dnx ef dbcontext scaffold "Server=MYDESK;Database=mydatabase;Trusted_Connection=True;" EntityFramework.MicrosoftSqlServer --outputDir Models

Questo ha creato le classi del modello di dati e la classe di contesto. L'ho verificato e ora sono passato a un'altra macchina e ho controllato il codice. Sulla nuova macchina non riesce a generare un errore nel codice generato da Entity Framework 7:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Items>(entity =>
    {
        entity.ToTable("Items", "myapi");

        entity.HasIndex(e => new { e.CreatedAt, e.CreatedAt, e.CreatedAt, e.CreatedAt }).HasName("IX_CreatedAt");

L'errore di compilazione, in quest'ultima riga, è "Un tipo anonimo non può avere più proprietà con lo stesso nome". Perché Entity Framework 7 genera codice che non verrà generato e come posso risolverlo?

Risposta accettata

Sembra che questo sia un bug noto: lo scaffolding di SQL Server genera tipi anonimi non validi per gli indici (rc1-final) # 3847 , causati da "conflitti tra gli indici che avevano lo stesso nome ma che si trovavano su tabelle diverse". È fissato in impegni più recenti rispetto al milestone Entity Framework 7 RC2 ( roadmap ).


Risposta popolare

L'errore è chiaro ... non puoi avere più proprietà con lo stesso nome ... Modifica l'ultima riga in basso:

    entity.HasIndex(e => new { 
                     CreatedAt = e.CreatedAt, 
                     Name2 = e.CreatedAt, 
                     Name3 = e.CreatedAt, 
                     Name4 = e.CreatedAt }).HasName("IX_CreatedAt");


Related

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é