"Sequenza non contiene elementi corrispondenti" impostando HasColumnType ("varchar") in Mappature EF usando Effort

.net c# effort entity-framework-6

Domanda

Ho il seguente mapping 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);
    }
}

Entrambe le colonne sono di tipo di dati = "varchar" nel mio database e le dimensioni sono corrette: inserisci la descrizione dell'immagine qui

Tuttavia, alcuni dei miei test unitari stanno fallendo con questo errore:

" System.InvalidOperationException: Sequence non contiene elementi corrispondenti "

Ho letto in un post correlato che è possibile ottenere l'errore sopra se si passa un tipo non valido al metodo HasColumnType ma nel mio caso "varchar" dovrebbe essere valido.

Qualche idea su cosa possa essere sbagliato?

Ecco come queste proprietà sono definite nella mia entità:

    public virtual string FileStoreVersion
    {
        get;
        set;
    }

    public virtual string FileStoreDetailsUrl
    {
        get;
        set;
    }

Ecco un esempio di un test che non riesce nella prima riga:

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

_context in questo caso è di tipo MemoryEnterprisePaycorCodeFirstContext :

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

Che eredita dalla mia public class EnterprisePaycorCodeFirstContext : DbContext

Quella classe è dove sto inizializzando i miei mapping di entità:

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

Potrebbe essere perché sto usando Effort MemoryContext vs un contesto Real DB?

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

Risposta accettata

Ho capito cosa fosse. Risulta che stavo usando la libreria Effort che non supporta alcuni tipi di colonne come indicato da @Balah. Ho usato la sua tecnica per aggirare la configurazione della mappatura delle entità quando proviene dal mio contesto di memoria: sforzo (test dell'unità EF) che genera errori




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché