2

我正在寻找一种方法来做这样的事情:

var  db = new DALEntities();
db.StoredProcedureToCall();

但是,我希望它是动态的,因为在将其他一些数据传递给我之前,我不会知道要拨打哪个电话。

var db = new DALEntities();
db[tSproc]();

我知道我可以有一个 switch 语句测试 tSproc 的值,然后像上面那样调用,但是有没有更优雅的方法?

谢谢

4

1 回答 1

1

将光标放在上面db.StoredProcedureToCall()并按 F12。您将看到 EF 生成的代码已经是动态的。

根据您使用的 EF 版本,它看起来像:

public ObjectResult<OrderDetail> GetDetailsForOrder
 (Nullable<global::System.Int32> orderid)
{
  ObjectParameter orderidParameter;
  if (orderid.HasValue)
  {
    orderidParameter = new ObjectParameter("orderid", orderid);
  }
  else
  {
    orderidParameter = new ObjectParameter("orderid", typeof(global::System.Int32));
  }
  return base.ExecuteFunction<OrderDetail>("GetDetailsForOrder", orderidParameter);
}

只需类似地编写代码。你不需要开关。

于 2012-06-13T20:43:09.477 回答