使实体框架与对象接口和Ninject一起工作
本文关键字:Ninject 一起 工作 接口 对象 实体 框架 | 更新日期: 2023-09-27 17:58:16
我在域层中定义了具有接口的对象:
public MyClass: IMyClass
{
public int id {get;set;}
}
public interface IMyClass
{
int Id { get; set; }
}
现在我试图在上下文中使用接口,但没有找到任何方法:
public DbSet<IMyClass> MyClasses{ get; set; }
当EF试图创建数据库时不起作用
我用设置了一个ninject模块(BindDLModule)
Bind<IMyClass>().To<MyClass>();
并在上下文中创建内核
IKernel _kernel = new StandardKernel(new BindDLModule());
但不知道如何在DbSet配置中使用_kernel来获取映射实现的类型
编辑1
举例说明用于测试的模拟实体:
public Class1
{
...
public Class1(){...}
public Class2 class2Property {get;}
public void setClass2 (Class2 class2Value)
{
//logic here
}
}
public Class2
{
//Simple class with construcor and few properties
}
在测试中,我会写
Class1 c1 = new Class1(Mock.Of<Class2>())
这样就不会调用Class2构造函数,并且测试在Class1上保持原子性。
编辑2
使用接口不是强制性的,我只是想伪造一些域实体或者,换句话说,由于接口都很好,只有EF给了我一些问题,所以我重新思考了接口的使用,但在这一点上需要其他方式来单元测试实体。
public virtual DbSet<_kernel.Get<IClass1>().GetType())> Classes1{ get; set; }
如果我找到正确的sintax来写