0

我正在使用MVC 5和實體框架6數據庫優先方法。從存儲庫模式中的Inteface調用存儲過程EF6&MVC示例

我無法找到調用接口和返回類型的存儲過程的例子是另一個問題,例如:

我的選擇是如下

Create Procedure pcdSELECTEMPLOYEE 

@Del bit 

AS 

SELECT * FROM EMPLOYEE WHERE @Del = EMPLOYEE.DEL 

GO 

德爾使用標誌字段用於刪除數據庫中的最佳做法。

所以,我得到的所有,甚至通過ID獲取涉及這樣的:

我從EF一個[GET/SET類]有員工 具有存儲過程

我需要幫助上下文類與IRepository.cs和Repository.cs調用Context.pcdSELECTEMPLOYEEContext.pcdSELECTEMPLOYEEBYID

我在interphace中設置了什麼對象用於返回類型或任何東西?

public interface IRepository<T> 
{ 
    IQueryable<T> GetAll(); 
    // other CRUD methods here... 
} 

請幫助這將是非常讚賞

感謝

實體框架創建以下 公共虛擬

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); 
     } 

回答

0

如果使用存儲庫模式,那麼你會有一個UnitOfWork類。對存儲過程的調用應放置在UnitOfWork類中。

至於返回類型,當您在實體框架中創建函數導入時,可以選擇Employee類作爲存儲過程返回的集合中每個項目的返回類型。存儲過程返回Employees的集合。

如果您的存儲過程只返回Employee表中的一部分列,那麼您將無法選擇Employee類。在這種情況下,實體框架會爲您創建一個複雜類型。

+0

請致電H絡合物類型的接口,感謝 – user2694368

+0

我不是用工作方式的單元與它會導致限制essentually我EF6的更大的項目的例子我這是單元班 – user2694368

0

您可以創建你自己的,它實現IRepository EFRepository類,並在 GETALL()做這樣的 if(T.Gettype()=typeof(Employee)) { _dbContext.SqlQuery<Employee>(sqltext, params).ToArray(); } 您也可以在實體上使用屬性不是硬代碼:)

  • 我用public IQueryable<T> GetAll(Expression<Func<T, bool>> predicate = null) { return (predicate == null) ? _context.Set<T>() : _context.Set<T>().Where(predicate); }來在數據庫級過濾