Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 实体:当DBContext来自DI时调用存储过程_Sql_Asp.net Mvc_Entity Framework_Stored Procedures_Ninject - Fatal编程技术网

Sql 实体:当DBContext来自DI时调用存储过程

Sql 实体:当DBContext来自DI时调用存储过程,sql,asp.net-mvc,entity-framework,stored-procedures,ninject,Sql,Asp.net Mvc,Entity Framework,Stored Procedures,Ninject,我将存储过程从DB导入实体模型,您能告诉我如何使用它并传递参数吗 我在NinjecetWebCommon中注册了我的DBContext: kernel.Bind<DbContext>().To<MyDbContext>().InRequestScope(); kernel.Bind().To().InRequestScope(); 现在我想从MyProcedure中获取数据,但我得到一个错误: 类型“CMS\u MyProcedure\u Result”映射为复杂类型

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

我在NinjecetWebCommon中注册了我的DBContext:

kernel.Bind<DbContext>().To<MyDbContext>().InRequestScope();
kernel.Bind().To().InRequestScope();
现在我想从MyProcedure中获取数据,但我得到一个错误:

类型“CMS\u MyProcedure\u 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>();
    }
}
公共类MyRepository:BaseRepository,IMyRepository { 公共MyRepository(DbContext\u DbContext) :base(_dbContext) { } 公共IQueryable GetProducts(int-catId、int-languageId) { return=_dbContext.Set(); } } 当Ninject(依赖项注入)正在使用时,是否有可能使用参数调用存储过程

谢谢

一种可能的方法是:-

public class StoredProcedure
{
    public List<CMS_MyProcedure_Result> GetCMSResult({StoredProcedureParameters})
    {
        return _dbContext.CMS_MyProcedure({StoredProcedureParameters}).ToList();
    }
}
公共类存储过程
{
公共列表GetCMSResult({StoredProcedureParameters})
{
返回_dbContext.CMS_MyProcedure({StoredProcedureParameters}).ToList();
}
}
你可以这样称呼它

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

但是我在
\u dbContext
中看不到
CMS\u MyProcedure
(因为Ninject依赖项注入)。我必须使用
\u dbContext.Set()
,但我不知道在哪里可以传递参数。