Параметр «Последовательность не содержит совпадающих элементов» HasColumnType («varchar») в сопоставлениях EF с использованием Effort

.net c# effort entity-framework-6

Вопрос

У меня есть следующее сопоставление 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);
    }
}

Оба столбца имеют тип данных = "varchar" в моей базе данных и размеры правильные: введите описание изображения здесь

Однако, некоторые из моих модульных тестов терпят неудачу с этой ошибкой:

" System.InvalidOperationException: последовательность не содержит соответствующего элемента "

Я прочитал в связанном посте, что вы можете получить ошибку выше, если вы передадите неверный тип методу HasColumnType но в моем случае «varchar» должен быть действительным

Есть идеи, что может быть не так?

Вот как эти свойства определены в моей сущности:

    public virtual string FileStoreVersion
    {
        get;
        set;
    }

    public virtual string FileStoreDetailsUrl
    {
        get;
        set;
    }

Вот пример одного теста, который не проходит в первой строке:

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

_context в этом случае имеет тип MemoryEnterprisePaycorCodeFirstContext :

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

Который наследует от моего public class EnterprisePaycorCodeFirstContext : DbContext

В этом классе я инициализирую свои сопоставления сущностей:

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

Может ли это быть потому, что я использую Effort MemoryContext против контекста Real DB?

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

Принятый ответ

Я понял, что это было. Оказывается, я использовал библиотеку Effort которая не поддерживает некоторые типы столбцов, на что указывает @Balah. Я использовал свою технику , чтобы обойти конфигурацию отображения объекта при выходе из моего контекста памяти: Усилия (EF Testing Unit) , давая ошибок



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему