我正在使用我从教程文本中获取的模式。我正在使用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 Repository
public virtual IQueryable<T> GetBySpParams(List<System.Data.SqlClient.SqlParameter> myParams)
{
return DbSet.Find(myParams);
}
在界面中使用:
IQueryable<T> GetBySpParams(List<System.Data.SqlClient.SqlParameter> myParams);
但这不起作用。非常感谢协助。
答案 0 :(得分:0)
这是使用参数调用存储过程的方法:
/* Declare your parameters and their values */
SqlParameter[] myParams = new SqlParameter[2];
myParams[0] = new SqlParameter("startDate", startDate);
myParams[1] = new SqlParameter("endDate", endDate);
return dbContext.Database.SqlQuery<YourReturnDataType>("Exec YourStoreProcedureName @startDate, @endDate", myParams).ToList();