实体:当DBContext来自DI

时间:2015-07-06 09:40:18

标签: sql asp.net-mvc entity-framework stored-procedures ninject

我将存储过程从DB导入实体模型,您能告诉我如何使用它并传递参数吗?

我在NinjecetWebCommon中注册了我的DBContext:

kernel.Bind<DbContext>().To<MyDbContext>().InRequestScope();

现在我想从MyProcedure获取数据,但是我收到错误:

  

“CMS_MyProcedure_Result”类型被映射为复杂类型。   Set方法,DbSet对象和DbEntityEntry对象只能是   与实体类型一起使用,而不是复杂类型。

这就是我想要的方式:

public class MyRepository : BaseRepository<Product>, IMyRepository
{
    public MyRepository(DbContext _dbContext)
        : base(_dbContext)
    {
    }

    public IQueryable<ProductDisplayDTO> GetProducts(int catId, int languageId)
    {
        return = _dbContext.Set<CMS_MyProcedure_Result>();
    }
}

当使用Ninject(依赖注入)时,是否有可能使用参数调用存储过程?

谢谢!

1 个答案:

答案 0 :(得分:0)

一种可能的方法是: -

public class StoredProcedure
{
    public List<CMS_MyProcedure_Result> GetCMSResult({StoredProcedureParameters})
    {
        return _dbContext.CMS_MyProcedure({StoredProcedureParameters}).ToList();
    }
}

你可以称之为

StoredProcedure storedProcedure = new StoredProcedure();
List<CMS_MyProcedure_Result> cmsResult = storedProcedure.GetCMSResult({StoredProcedureParameters});