C# 实体框架中的调用存储过程
我使用实体框架来调用存储过程。存储过程如下所示:C# 实体框架中的调用存储过程,c#,entity-framework,stored-procedures,C#,Entity Framework,Stored Procedures,我使用实体框架来调用存储过程。存储过程如下所示: ALTER PROCEDURE [dbo].[AdminContracts] @StatusId INT AS BEGIN SET NOCOUNT ON; SELECT .. public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus) { return ((IObjectContextAdapter) this)
ALTER PROCEDURE [dbo].[AdminContracts]
@StatusId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT ..
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("AdminContracts", new SqlParameter("@StatusId", orderStatus));
}
我的代码如下所示:
ALTER PROCEDURE [dbo].[AdminContracts]
@StatusId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT ..
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("AdminContracts", new SqlParameter("@StatusId", orderStatus));
}
公共虚拟对象结果GetAdminOrders(int orderStatus)
{
返回((IObjectContextAdapter)this.ObjectContext.ExecuteStoreQuery(“AdminContracts”,新的SqlParameter(“@StatusId”,orderStatus));
}
从其他问题来看,这似乎是正确的
但是,它会导致一个例外:
过程或函数“AdminContracts”需要未提供的参数“@StatusId”
在我看来还可以,但显然我遗漏了一些东西请尝试以下代码:
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("EXEC AdminContracts @StatusId", new SqlParameter("StatusId", orderStatus));
}
公共虚拟对象结果GetAdminOrders(int orderStatus)
{
返回((IObjectContextAdapter)this.ObjectContext.ExecuteStoreQuery(“EXEC AdminContracts@StatusId”,新的SqlParameter(“StatusId”,orderStatus));
}
执行请求查询
方法
直接对返回一系列类型化结果的数据源执行查询。
所以它可以由用户运行T-SQL语句,您可以检查它的
因此,您的代码如下所示:
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("EXEC AdminContracts @StatusId", new SqlParameter("StatusId", orderStatus));
}
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("AdminContracts", new ObjectParameter("@StatusId", orderStatus));
}
公共虚拟对象结果
因此,您的代码如下所示:
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("EXEC AdminContracts @StatusId", new SqlParameter("StatusId", orderStatus));
}
public virtual ObjectResult<AdminOrder> GetAdminOrders(int orderStatus)
{
return ((IObjectContextAdapter) this).ObjectContext.ExecuteStoreQuery<AdminOrder>("AdminContracts", new ObjectParameter("@StatusId", orderStatus));
}
公共虚拟对象结果GetAdminOrders(int orderStatus)
{
返回((IObjectContextAdapter)this.ObjectContext.ExecuteStoreQuery(“AdminContracts”,新对象参数(“@StatusId”,orderStatus));
}