具有可选参数的entity framework?

使用Entity Framework 5是否可以使用带有可选参数的存储过程,这样您就不必为每个未使用的参数添加空值?

我必须使用的存储过程有87个参数,其中只有2个是必需的。 我真的很讨厌在每个调用中放入85个空值的想法。

您可以使用ObjectContext.ExecuteFunction方法( DbContext是ObjectContext上的包装器)来执行一些存储过程并传递参数列表:

 FooEntities db = new FooEntities(); var objectContext = ((IObjectContextAdapter)db).ObjectContext; // create all parameters you need var name = new ObjectParameter("Name", "Lazy"); var age = new ObjectParameter("Age", 29); // call stored procedure with these two parameters only var result = objectContext.ExecuteFunction("ProcedureName", name, age); 

您可以将此代码包装到DbContext扩展方法中:

 public static Result ProcedureName(this FooEntities db, name, age) { // code above } 

用法如下: var result = db.ProcedureName("Lazy", 29);

我正在展示@Francisco Goldenstein对答案的评论。 “EXEC SP_MySP @ One,@ Two,@ Three,@ Four”语句中的顺序应与存储过程的参数匹配。 paraOne,paraTwo等的顺序无关紧要。

  public List GetMyData(int thirdValue, string firstValue) { var paraOne = new SqlParameter("@One", firstValue); var paraTwo = new SqlParameter("@Two", DBNull.Value); var paraThree = new SqlParameter("@Three", thirdValue); var paraFour = new SqlParameter("@Four", DBNull.Value); var result = DataContext.Database.SqlQuery("EXEC SP_MySP @One, @Two, @Three, @Four" , paraTwo, paraOne, paraFour,paraThree).ToList(); return result; }