Komponententest mit Aufwand - Hinzufügen von Datensätzen mit deaktivierter Identität

effort mstest objectcontext unit-testing

Frage

Ich verwende Effort (für EF4), um einige Komponententests durchzuführen.

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

Die ID-Spalte in der Firma ist ein Identitätsfeld. Nach dem Ausführen der obigen Abfrage stellt sich heraus, dass der ID-Wert 1 statt 100 ist. Gibt es eine Möglichkeit, Identity_insert während der Verwendung von Aufwand zu steuern

Akzeptierte Antwort

Dies ist nur, um die Lösung in diesem Thread hinzuzufügen. @MrBlueSky fügen Sie die archivierten Links der Lösung zu den obigen Kommentaren hinzu. Aber, DbConfiguration die auf der Verbindung verwendet wird, existiert nicht mehr auf dem letzten Aufwand. Die Lösung existiert noch auf Effort.EF6 [version="1.3.0"] . Und Sie können die Methode SetIdentityFields auf EffortConnection.DbManager , um die Identitätsfelder EffortConnection.DbManager oder auszuschalten

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

Einschalten

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum