我正在使用一種模式,可以從教程文本中獲得這些模式。我使用EF6,數據庫優先。它是一個存儲庫模式。我無法弄清楚如何將參數傳遞給SP。如何將參數傳遞給EF6中的SP
有一個叫EFRepository通過ID返回完整的表或記錄的樣品類,如下所示:
public class EFRepository<T> : IRepository<T> where T : class
{
public EFRepository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentNullException("dbContext");
DbContext = dbContext;
DbSet = DbContext.Set<T>();
}
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public virtual IQueryable<T> GetAll()
{
return DbSet;
}
public virtual T GetById(int id)
{
return DbSet.Find(id);
}
接口類看起來是這樣的:
public interface IRepository<T> where T : class
{
//To query using LINQ
IQueryable<T> GetAll();
//Return by ID
T GetById(int id);
我嘗試添加這EF庫
public virtual IQueryable<T> GetBySpParams(List<System.Data.SqlClient.SqlParameter> myParams)
{
return DbSet.Find(myParams);
}
與此接口:
IQueryable<T> GetBySpParams(List<System.Data.SqlClient.SqlParameter> myParams);
但這不起作用。援助將不勝感激。
那麼究竟是什麼不起作用?你沒有展示你如何用EF調用SP。 'DBSet.Find'方法接受一個或多個對象並通過id(s)搜索單個記錄。它不會調用任何SP。 – vittore
從我的api中,我可以調用GetAll或GetByID並傳遞一個int。我不能做的(或不知道如何做的)就是調用一個存儲過程並將其傳遞給Params。例如,我可以調用var model = Uow。 GetAll()。OrderBy(m => m.Address).Select(m => new ContractedPropertyListModel –
ebick
如果你在做數據庫,應該有一個模型,一個.edmx文件?您可以從數據庫更新模型以包含SP並調用SP,就像函數'DbContext.SPName(p1,p2)' – Brandon