我在用这个
InventoryMgmtContext
我的申请表上到处都是,我已经好几年没碰过了。但我现在正试图在一个新的测试项目中使用它,并得到这个问题。常规应用程序仍能正常运行,问题就在尝试运行此测试时。所有这些都经过了编译。该错误在测试执行期间的运行时引发。
我确实看到了
this similar question
,但这些答案都不适用于我,也不适用于我。
注意:所有这些涉及的项目都在同一个解决方案中。以下是我尝试过的一些事情。
-
清理和重建项目。
-
手动删除测试项目的bin文件夹中的文件
-
确保参考OTIS。领域测试项目中的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目录
首先由实体框架DB创建,继承自
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")
{
}
<...>
}
}
我创建了自己的分部类声明来扩充EFs,以确保它符合
IDbContext
接口,它指定
设置
方法
使用煽动核心。领域
使用系统。数据实体
namespace OTIS.Domain.InventoryMgmt
{
public partial class InventoryMgmtContext : DbContext, IDbContext
{
}
}
我的测试方法,实例化一个新的
InventoryMgmtContext目录
,这是引发错误的位置。注:我还包括对
设置
方法那么为什么我会出现这个错误呢?此项目确实引用了这两个
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();