Я использую это InventoryMgmtContext
повсюду в своем приложении, и я не трогал его годами.Но сейчас я пытаюсь использовать его в новом тестовом проекте и получаю эту проблему.Обычное приложение по-прежнему работает нормально, проблема заключается только в том, чтобы попытаться запустить этот тест.И все это проходит компиляцию.Ошибка выдается во время выполнения во время выполнения теста.
Я видел этот похожий вопрос , но ни один из ответов не применялся и не работал для меня.
Обратите внимание, что все эти вовлеченные проекты находятся в одном решении.Вот несколько вещей, которые я попробовал.
- Очистка и перестройка проекта.
- Удаление файлов в папке bin моего тестового проекта вручную
- Обеспечениеупомянутая версия OTIS.Domain.dll в тестовом проекте является последней, созданной во время сборки решения.
Не уверен, что еще
Ошибка:
Message: Test method ShopifyAdapterUnitTests.ManageProductTests.GetAndImportUpdatedProductsProducts threw exception:
System.TypeLoadException: Method 'Set' in type 'OTIS.Domain.InventoryMgmt.InventoryMgmtContext' from assembly 'OTIS.Domain, Version=1.5.6983.16416, Culture=neutral, PublicKeyToken=null' does not have an implementation.
Мой IDbContext
интерфейс:
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
namespace InciteCore.Domain
{
public interface IDbContext
{
DbSet<T> Set<T>() where T : class;
DbEntityEntry<T> Entry<T>(T entity) where T : class;
int SaveChanges();
void Dispose();
}
}
Частичный класс InventoryMgmtContext
, созданный Entity Framework DB First, который наследуется от System.Data.Entity.DbContext
, который имеет метод Set
:
namespace OTIS.Domain.InventoryMgmt
{
using System;
using System.Data.Entity;
using System.Data.Entity.Core.Objects;
using System.Data.Entity.Infrastructure;
public partial class InventoryMgmtContext : DbContext
{
public InventoryMgmtContext()
: base("name=InventoryMgmtContext")
{
}
<...>
}
}
Я создал свое собственное частичное объявление класса для дополнения EF, чтобы убедиться, что оно соответствует интерфейсу IDbContext
, в котором указан метод Set
.использование InciteCore.Domain;using System.Data.Entity;
namespace OTIS.Domain.InventoryMgmt
{
public partial class InventoryMgmtContext : DbContext, IDbContext
{
}
}
Мой метод тестирования, создание нового InventoryMgmtContext
, в котором выдается ошибка.Заметьте, я также включил вызов метода Set
!!!Так почему я мог получить эту ошибку?Этот проект имеет ссылку на OTIS.Domain.dll
и InciteCore.Domain
.
public async Task GetAndImportUpdatedProductsProducts()
{
InventoryMgmtContext dbContext = new InventoryMgmtContext();
var items = dbContext.Set<Item>(); <---- Set Method call!!!
var repository = new InciteCore.Data.Repository<StoreFront>(dbContext);
var storeFront = await repository.SearchFor(s => s.Id == 8).FirstOrDefaultAsync();