C# 调用存储过程EF6&;存储库模式示例中来自Inteface的MVC

C# 调用存储过程EF6&;存储库模式示例中来自Inteface的MVC,c#,asp.net-mvc,entity-framework,stored-procedures,repository-pattern,C#,Asp.net Mvc,Entity Framework,Stored Procedures,Repository Pattern,我使用MVC5和EntityFramework6数据库优先的方法 我在接口中找不到调用存储过程的示例,返回类型是另一个问题,例如: 我的选择如下 Create Procedure pcdSELECTEMPLOYEE @Del bit AS SELECT * FROM EMPLOYEE WHERE @Del = EMPLOYEE.DEL GO Del是一个标志字段,用于在数据库中删除以获得最佳实践 因此,我的“全取”或“全取”ID涉及以下内容: 我从EF为员工创建了一个[GET/SET类

我使用MVC5和EntityFramework6数据库优先的方法

我在接口中找不到调用存储过程的示例,返回类型是另一个问题,例如:

我的选择如下

Create Procedure pcdSELECTEMPLOYEE

@Del bit

AS

SELECT * FROM EMPLOYEE WHERE @Del = EMPLOYEE.DEL

GO
Del是一个标志字段,用于在数据库中删除以获得最佳实践

因此,我的“全取”或“全取”ID涉及以下内容:

我从EF为员工创建了一个[GET/SET类] 具有存储过程的上下文类

我需要有关IRepository.cs和Repository.cs调用
Context.pcdSELECTEMPLOYEE
Context.pcdSELECTEMPLOYEEBYID的帮助

我应该在interphace中为返回类型或任何东西设置哪些对象

public interface IRepository<T>
{
    IQueryable<T> GetAll();
    // other CRUD methods here...
} 
公共接口IRepository
{
IQueryable GetAll();
//其他CRUD方法在这里。。。
} 
请帮忙,我们将不胜感激

谢谢

实体框架创建以下内容 公共虚拟

ObjectResult<pcdSelectStaffBID_Result>pcdSelectStaffBID(Nullable<int> iD)
        {
            var iDParameter = iD.HasValue ?
                new ObjectParameter("ID", iD) :
                new ObjectParameter("ID", typeof(int));

            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<pcdSelectStaffBID_Result>("pcdSelectStaffBID", iDParameter);
        }
ObjectResultpcdSelectStaffBID(可为空的iD)
{
var iDParameter=iD.HasValue?
新的ObjectParameter(“ID”,ID):
新的ObjectParameter(“ID”,typeof(int));
返回((IObjectContextAdapter)this.ObjectContext.ExecuteFunction(“pcdSelectStaffBID”,iDParameter);
}

如果您使用的是存储库模式,那么您将拥有一个UnitOfWork类。对存储过程的调用应该放在UnitOfWork类中

对于返回类型,在Entity Framework中创建函数Import时,可以选择Employee类作为存储过程返回的集合中每个项的返回类型。存储过程返回雇员的集合


如果存储过程只返回Employee表中列的一个子集,则无法选择Employee类。在这种情况下,实体框架将为您创建一个复杂类型。

您可以创建自己的eRepository类来实现IRepository,并在 GetAll()你喜欢这样做吗
if(T.Gettype()=typeof(Employee)){
_SqlQuery(sqltext,params).ToArray();
}
您还可以在实体上使用属性,而不是硬编码:)

  • 我使用公共IQueryable GetAll(表达式谓词=null) { 返回(谓词==null)?\u context.Set():\u context.Set()。其中(谓词); }
在数据库级别进行过滤
请提供一个在接口中调用h复杂类型的示例,该类型不使用工作单元方法,因为在较大的项目中,它会造成限制。实际上,我的ef6是unitofwork类