Domanda

Anche se ho segnato la mia colonna ID con .Identity(), lo schema di database generato non ha IDENTITY Imposta su True, il che mi dà problemi quando aggiungo record. Se modifico manualmente lo schema del database (in SQL Management Studio) per avere il Id colonna contrassegnata IDENTITY, tutto funziona come lo voglio - non riesco proprio a farlo fare da solo.

Questa è la mia mappatura completa:

public class EntryConfiguration : EntityConfiguration<Entry>
{
    public EntryConfiguration()
    {
        Property(e => e.Id).IsIdentity();
        Property(e => e.Amount);
        Property(e => e.Description).IsRequired();
        Property(e => e.TransactionDate);

        Relationship(e => (ICollection<Tag>)e.Tags).FromProperty(t => t.Entries);
    }
}

Dato che sto usando EF per costruire e ricostruire il database per i test di integrazione, ho davvero bisogno di questo per essere fatto automaticamente ...

MODIFICARE:Hm ... in un commento mi è stato chiesto di dare un codice sufficiente per eseguirlo, quindi ho tagliato il mio codice in un'app di console (quindi non avresti bisogno di tutte le mie lezioni ...) e improvvisamente ha funzionato . Immagino che stavo dimenticando una chiamata del metodo da qualche parte, anche se non sono stato in grado di capire dove.

Pubblicherò il codice di soluzione di lavoro in una risposta a questo post, nel caso in cui qualcun altro venga a cercarlo.

È stato utile?

Soluzione

L'esecuzione di questo codice risolve il problema. Immagino di aver dimenticato un passo da qualche parte, quindi se hai lo stesso problema, assicurati di fare tutte queste cose:

var connection = GetUnOpenedSqlConnection();       // Any connection that inherits
                                                   // from DbConnection is fine.

var builder = new ContextBuilder<ObjectContext>(); // I actually had my own class
                                                   // that inherits from 
                                                   // ObjectContext, but that was 
                                                   // not the issue (I checked).

builder.Configurations.Add(EntryConfiguration);    // EntryConfiguration is the 
                                                   // class in the question

var context = builder.Create(connection);

if (context.DatabaseExists())
{ context.DeleteDatabase(); }

context.CreateDatabase();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top