"La secuencia no contiene ningún elemento coincidente" configurando HasColumnType ("varchar") en Asignaciones de EF usando Esfuerzo

.net c# effort entity-framework-6

Pregunta

Tengo la siguiente asignación de Entity Framework (v6.1.3):

public class FileStoreDocumentEntityMapping : EntityTypeConfiguration<FileStoreDocumentEntity>
{
    public FileStoreDocumentEntityMapping()
    {
        Property(x => x.FileStoreDownloadUrl)
            .HasColumnName("FileStoreDetailsUrl")
            .HasColumnType("varchar")
            .HasMaxLength(1000);
        Property(x => x.FileStoreVersion)
            .HasColumnName("FileStoreVersion")
            .HasColumnType("varchar")
            .HasMaxLength(100);
    }
}

Ambas columnas son del tipo de datos = "varchar" en mi base de datos y los tamaños son correctos: introduzca la descripción de la imagen aquí

Sin embargo, algunas de mis pruebas de unidad están fallando con este error:

" System.InvalidOperationException: la secuencia no contiene ningún elemento coincidente "

Leí en una publicación relacionada que puede obtener el error anterior si pasa un tipo no válido al método HasColumnType pero en mi caso "varchar" debería ser válido.

¿Alguna idea sobre que podría ir mal?

Aquí es cómo esas propiedades se definen en mi entidad:

    public virtual string FileStoreVersion
    {
        get;
        set;
    }

    public virtual string FileStoreDetailsUrl
    {
        get;
        set;
    }

Aquí hay un ejemplo de una prueba que falla en la primera línea:

    [TestMethod]
    public void Delete_ReturnsSuccess()
    {
        _context.DistributionListSelectionCriteriaDepartmentEntities.Add(_distributionListSelectionCriteriaDepartmentEntity);

_context en este caso es de tipo MemoryEnterprisePaycorCodeFirstContext :

    private void InitializeTestObjects()
    {
        _context = new MemoryEnterprisePaycorCodeFirstContext();

Que hereda de mi public class EnterprisePaycorCodeFirstContext : DbContext

Esa clase es donde estoy inicializando mis asignaciones de entidades:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new FileStoreDocumentEntityMapping());

¿Podría ser porque estoy usando Effort MemoryContext en un contexto de Real DB?

public class MemoryEnterprisePaycorCodeFirstContext : EnterprisePaycorCodeFirstContext
{
    public MemoryEnterprisePaycorCodeFirstContext()
        : base(DbConnectionFactory.CreateTransient())
    {
        Database.CreateIfNotExists();
    }

Respuesta aceptada

Me di cuenta de lo que era. Resulta que estaba usando la biblioteca Effort que no es compatible con algunos tipos de columnas como lo señaló @Balah. Utilicé su técnica para omitir la configuración de mapeo de entidades cuando provenía de mi Contexto de Memoria: Esfuerzo (EF Unit Testing) dando errores



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é