Esfuerzo (C #) - 'La secuencia no contiene ningún elemento coincidente' al sembrar datos en cualquiera de mis entidades


Pregunta

Estoy tratando de construir algunas pruebas unitarias para algunas llamadas de servicio web en mi proyecto. Estoy utilizando Entity Framework 6.1.3 en mi proyecto para recuperar los datos en la capa de servicio (con un enfoque de código primero). Hice una investigación sobre cómo simular un objeto DatabaseContext y descubrí que Effort puede hacer esto.

Seguí la documentación al implementar Effort en mis pruebas unitarias, pero cuando intento agregar datos a mis entidades obtengo una excepción "System.InvalidOperationException: 'La secuencia no contiene ningún elemento coincidente'". No estoy completamente seguro de por qué sucede esto. Cualquier ayuda será muy apreciada. ¡Gracias!

Así es como se ve el código ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Aquí es donde sembré datos a las entidades ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Aquí está mi modelo de entidad ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Aquí está mi DatabaseContext ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

También tengo otra clase FakeDbContext.Base que anula OnModelCreating.

Aquí está el seguimiento de pila:

StackTrace

Respuesta aceptada

El seguimiento de la pila muestra que la excepción se produce cuando el proveedor de datos está buscando un "tipo de almacén del nombre". Esto indica que está utilizando un tipo de datos que Effort no admite. Esto es confirmado por un problema en el proyecto Esfuerzo .


Respuesta popular

espero que esto ayude.

Muchas respuestas dicen que tiene que agregar FirstorDefault() en sus declaraciones EF, pero este error también ocurre en las propiedades incorrectas usando anotaciones de datos.

Cuando use Anotaciones de datos, tenga cuidado con las propiedades que agregue.

En el siguiente ejemplo, me perdí el TypeName = "string" , que debería haber sido nvarchar ya que es el tipo de datos en la base de datos.

Además, tome nota de la Order = n , (comienza con 0)

Encontré esto al actualizar un código fuente de colegas anteriores.

[Display(Name = "Name")]
[MaxLength(4000)]
[Column("Name", Order = 14, TypeName = "string")]
public string Name { get; set; }

entonces corregí mi código con

[Display(Name = "Name")]
[MaxLength(4000)]
[Column("Name", Order = 14, TypeName = "string")]
public string Name { get; set; }

:)





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