Test unitaire avec effort - Ajout d'enregistrements avec identité désactivée

effort mstest objectcontext unit-testing

Question

J'utilise Effort (pour EF4) pour effectuer des tests unitaires.

var ctx= Effort.ObjectContextFactory.CreateTransient<TheContext>(Shared.Connection);
ctx.companies.AddObject(new company() { ID = 100, name = "Agent", is_agent = true });
ctx.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave);

La colonne ID de la société est un champ d'identité. Après avoir exécuté la requête ci-dessus, il s’avère que la valeur de l’ID est 1 au lieu de 100. Existe-t-il un moyen de contrôler Identity_insert lors de l’utilisation de Effort?

Réponse acceptée

Ceci est juste pour ajouter la solution sur ce fil. @MrBlueSky ajouter les liens archieved de la solution sur les commentaires ci-dessus. Mais, DbConfiguration qui est utilisé sur le lien, n’existe plus sur le dernier Effort. La solution existe toujours sur Effort.EF6 [version="1.3.0"] . Et vous pouvez utiliser la méthode SetIdentityFields sur EffortConnection.DbManager pour activer ou désactiver les champs d'identité.

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}

Allumer

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi