使实体框架与对象接口和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给了我一些问题,所以我重新思考了接口的使用,但在这一点上需要其他方式来单元测试实体。

使实体框架与对象接口和Ninject一起工作

public virtual DbSet<_kernel.Get<IClass1>().GetType())> Classes1{ get; set; }

如果我找到正确的sintax来写