Pergunta

Embora eu tenha marcado minha coluna de identificação com .Identity(), o esquema de banco de dados gerado não tem IDENTITY Defina como True, o que me dá problemas quando estou adicionando registros. Se eu editar manualmente o esquema de banco de dados (no SQL Management Studio) para ter o Id coluna marcada IDENTITY, tudo funciona como eu quero - simplesmente não consigo fazer o EF fazer isso por si só.

Este é o meu mapeamento 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);
    }
}

Enquanto estou usando o EF para construir e reconstruir o banco de dados para testes de integração, eu realmente preciso que isso seja feito automaticamente ...

EDITAR:HM ... Em um comentário, fui solicitado a fornecer código suficiente para executar isso, então eu cortei e coloquei meu código em um aplicativo de console (para que você não precisasse de todas as minhas aulas ...) e de repente funcionou . Acho que estava esquecendo algum método chamado em algum lugar, embora não tenha conseguido descobrir onde.

Vou postar o código de solução em funcionamento em uma resposta a esta postagem, caso outra pessoa venha procurando por ele.

Foi útil?

Solução

A execução deste código resolve o problema. Acho que devo ter esquecido um passo em algum lugar; portanto, se você tiver o mesmo problema, certifique -se de fazer todas essas coisas:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top