1

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 défini sur true, ce qui me pose des problèmes lorsque j'ajoute des enregistrements. Si je modifie manuellement le schéma de base de données (dans SQL Management Studio) pour que la colonne Id soit marquée IDENTITY, tout fonctionne comme je le souhaite - je ne peux pas faire en sorte que EF le fasse par lui-même.Mapper une colonne pour être IDENTITY dans db

Voici ma cartographie 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, on m'a demandé de donner assez de code pour l'exécuter, donc j'ai collé et collé mon code dans une application de console (donc vous n'auriez pas besoin de toutes mes classes ...) et tout à coup ça a juste marché. Je suppose que j'oubliais un appel de méthode quelque part, bien que je n'ai pas été capable de comprendre où.

Je posterai le code de la solution de travail dans une réponse à ce message, au cas où quelqu'un d'autre le chercherait.

+0

Si vous pouvez inclure le code nécessaire pour exécuter/essayer sur place, je lui donnerais une rotation pour voir ce qui se passe ici. –

Répondre

1

L'exécution de ce code résout 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(); 
Questions connexes