Усилия (C #) - «Последовательность не содержит соответствующего элемента» при посеве данных для любого из моих объектов


Вопрос

Я пытаюсь построить некоторые модульные тесты для нескольких вызовов веб-сервисов в моем проекте. Я использую Entity Framework 6.1.3 в своем проекте для извлечения данных на уровне службы (с использованием подхода, основанного на кодах). Я провел некоторое исследование о том, как скомпоновать объект DatabaseContext, и я узнал, что Effort может это сделать.

Я следил за документацией при реализации Effort в своих модульных тестах, но когда я пытаюсь занести данные в мои объекты, я получаю исключение «System.InvalidOperationException:« Sequence не содержит исключение соответствующего элемента ». Я не совсем понимаю, почему это происходит. Любая помощь будет высоко ценится. Благодаря!

Вот как выглядит код.

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

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

Здесь я помещаю данные в объекты ...

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

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

Вот моя модель сущности ...

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

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

Вот мой DatabaseContext ...

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

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

У меня также есть другой класс FakeDbContext.Base, который переопределяет OnModelCreating.

Вот трассировка стека:

Трассировки стека

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

Трассировка стека показывает, что исключение генерируется, когда поставщик данных ищет «тип хранилища от имени». Это означает, что вы используете тип данных, который Effort не поддерживает. Это подтверждается проблемой в проекте «Усилия» .


Популярные ответы

надеюсь это поможет.

Многие ответы говорят, что вы должны добавить FirstorDefault() в свои операторы EF, но эта ошибка также возникает в неправильных свойствах с использованием аннотаций данных.

При использовании аннотаций данных будьте осторожны со свойствами, которые вы добавляете.

Пример ниже, я пропустил TypeName = "string" , который должен был быть nvarchar как это тип данных в базе данных.

Также обратите внимание на Order = n , (начинается с 0)

Об этом стало известно при обновлении исходного кода предыдущих коллег.

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

затем я исправил свой код с помощью

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

:)





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