Сборка фиктивного модульного теста Entity Framework выдает ошибку - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь создать модульный тест для контекста, который имеет 3 объекта. Я начал с Тестирование с помощью фреймворка , используя раздел «Тестирование сценария запросов ios». Здесь слишком много кода, чтобы включить его, поэтому, пожалуйста, обратитесь к статье, и мой код в значительной степени похож на изложенный там. Кажется, что в основном статья содержит одну сущность, я продублировал код для трех моих сущностей. Модульный тест, кажется, работает для первой сущности, но когда я пытаюсь выполнить запрос вроде:

var account = await DbContext.Accounts
                             .Where(a => a.AccountId == accountIdGuid)
                             .FirstOrDefaultAsync()
                             .ConfigureAwait(false);

, где я делаю запрос, чтобы вернуть учетную запись с заданным идентификатором. Этот запрос вызывает исключение:

System.ArgumentException: выражение типа

'System.Linq.EnumerableQuery 1[SubHub.Zoabl.DataAccess.Changepoint.CreditCard]' cannot be used for parameter of type 'System.Linq.IQueryable 1 [SubHub.Zoabl.DataAccess.Changepoint.Account]' метода 'System.Linq.IQueryable 1[SubHub.Zoabl.DataAccess.Changepoint.Account] Where[Account](System.Linq.IQueryable 1 [SubHub.Zoabl.DataAccess.Changepoint.Account], System.Linq.Expressions.Expression 1[System.Func 2 [SubHub.Zoabl.DataAccess.Changepoint.Account, System.Boolean] ]) '

Я не уверен, как расшифровать это исключение. Подробности исключения упоминают CreditCard. Единственная ссылка на CreditCard в сущности Account - это свойство навигации.

Сущность Account выглядит следующим образом:

[Table("Account")]
public partial class Account
{
    public Guid AccountId { get; set; }
    public Guid CreditCardId { get; set; }
    public virtual CreditCard CreditCard { get; set; }
}

Я использую Entity Framework 6.4, если это имеет значение.

Итак, главный вопрос сейчас: «Как мне расшифровать это исключение?»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...