Pregunta

Aunque he marcado mi columna de identificación con .Identity(), el esquema de la base de datos generado no tiene IDENTITY Establezca en True, que me da problemas cuando estoy agregando registros. Si edito manualmente el esquema de la base de datos (en SQL Management Studio) para tener el Id columna marcada IDENTITY, todo funciona como lo quiero, simplemente no puedo hacer que lo haga por sí solo.

Esta es mi mapeo completo:

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);
    }
}

Como estoy usando EF para construir y reconstruir la base de datos para las pruebas de integración, realmente necesito que esto se haga automáticamente ...

EDITAR:Hm ... en un comentario me pidieron que diera suficiente código para ejecutar esto, así que corté y pasé mi código en una aplicación de consola (para que no necesitaras todas mis clases ...) y de repente solo funcionó . Supongo que estaba olvidando una llamada de método en algún lugar, aunque no he podido averiguar dónde.

Publicaré el código de solución de trabajo en una respuesta a esta publicación, en caso de que alguien más venga a buscarlo.

¿Fue útil?

Solución

Ejecutar este código resuelve el problema. Supongo que debo haber olvidado un paso en algún lugar, así que si tienes el mismo problema, asegúrate de hacer todas estas cosas:

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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top