Question

Bien que j'ai marqué ma colonne ID avec .Identity(), le schéma de base de données généré n'a pas IDENTITY valeur true, ce qui me donne des problèmes quand j'ajouter des enregistrements. Si je modifier manuellement le schéma de base de données (dans SQL Management Studio) d'avoir la colonne Id marquée IDENTITY, tout fonctionne comme je le veux. - Je ne peux pas faire EF faire par lui-même

Ceci est mon application complète:

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

Comme j'utilise EF pour construire et reconstruire la base de données pour les tests d'intégration, j'ai vraiment besoin que cela soit fait automatiquement ...

EDIT: Hm ... Dans un commentaire il m'a été demandé de donner assez de code pour exécuter, alors je couper-coller mon code dans une application console (vous auriez pas besoin de toutes mes classes ...) et tout à coup juste travaillé . Je suppose que j'oubliais un certain appel de méthode quelque part, même si je ne l'ai pas été en mesure de savoir où.

Je posterai quelqu'un code solution de travail dans une réponse à ce poste, en cas d'autre vient chercher.

Était-ce utile?

La solution

L'exécution de ce code permet de résoudre le problème. Je suppose que je dois avoir oublié une étape quelque part, donc si vous avez le même problème, assurez-vous de faire toutes ces choses:

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top