Prueba de unidad con Esfuerzo - Añadiendo registros con identidad desactivada

effort mstest objectcontext unit-testing

Pregunta

Estoy usando Effort (para EF4) para hacer algunas pruebas unitarias.

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 columna de ID en la empresa es un campo de identidad. Después de ejecutar la consulta anterior, resulta que el valor de ID es 1 en lugar de 100. ¿Hay alguna forma de controlar Identity_insert mientras usa Effort?

Respuesta aceptada

Esto es sólo para agregar la solución en este hilo. @MrBlueSky agrega los enlaces archivados de la solución en los comentarios anteriores. Pero, DbConfiguration , que se usa en el enlace, ya no existe en el último esfuerzo. La solución todavía existe en Effort.EF6 [version="1.3.0"] . Y puede usar el método SetIdentityFields en EffortConnection.DbManager para activar o desactivar los campos de identidad

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

Encendiendo

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué