Réglage "La séquence ne contient aucun élément correspondant" HasColumnType ("varchar") dans les mappages EF utilisant Effort

.net c# effort entity-framework-6

Question

J'ai le mappage Entity Framework (v6.1.3) suivant:

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

Les deux colonnes sont de type de données = "varchar" dans ma base de données et leurs tailles sont correctes: entrez la description de l'image ici

Cependant, certains de mes tests unitaires échouent avec cette erreur:

" System.InvalidOperationException: la séquence ne contient aucun élément correspondant "

J'ai lu dans un article lié que vous pouvez obtenir l'erreur ci-dessus si vous transmettez un type non valide à la méthode HasColumnType mais que dans mon cas, "varchar" doit être valide.

Des idées ce qui pourrait être le problème?

Voici comment ces propriétés sont définies dans mon entité:

    public virtual string FileStoreVersion
    {
        get;
        set;
    }

    public virtual string FileStoreDetailsUrl
    {
        get;
        set;
    }

Voici un exemple d'un test qui échoue à la première ligne:

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

_context dans ce cas de type MemoryEnterprisePaycorCodeFirstContext :

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

Qui hérite de ma public class EnterprisePaycorCodeFirstContext : DbContext

C'est dans cette classe que j'initialise mes mappages d'entités:

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

Cela est-il dû au fait que j'utilise Effort MemoryContext vs un contexte Real DB?

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

Réponse acceptée

J'ai compris ce que c'était. Il s'avère que j'utilisais la bibliothèque Effort , qui ne prend pas en charge certains types de colonne, comme l'a souligné @Balah. J'ai utilisé sa technique pour contourner la configuration du mappage d'entités lorsque je venais de ma mémoire Contexte: Effort (EF Unit Testing) donnant des erreurs



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow