【发布时间】:2015-07-17 21:17:32
【问题描述】:
现在我正在使用 Entity Framework 将多个参数传递给一个存储过程,它看起来像这样..
public long AddDealer(Dealer dealer)
{
return Convert.ToInt32(AWJE.Database.SqlQuery<Dealer>(
"usp_InsertDealer @Name, @Description",
new SqlParameter("@DealerID", dealer.DealerID).Value,
new SqlParameter("@Name", dealer.Name),
new SqlParameter("@Description", dealer.Description)
));
}
是否有更优雅或更简洁的方式来传递多个参数,而不是显示的方式?如果我遇到其他需要传递更多参数的存储过程,那么这种方式看起来会很快变得混乱。
【问题讨论】:
-
您是先使用代码还是生成了 edmx?我知道过去我在我的 edmx 中添加了一个存储过程,然后能够像调用函数一样调用它。 msdn.microsoft.com/en-us/library/vstudio/…
-
@kmacdonald,我在SSMS中编写了存储过程和表,然后从数据库中生成。
-
我不知道
usp_InsertAddress究竟做了什么,但在我看来,您可以只使用一个实体并将其添加到上下文和SaveChanges()或者,如果您需要使用存储CUD 操作的 procs,相应地映射存储的 procs。 EF 也会尝试将存储过程的结果具体化为IEnumerable<Address>,所以我不太确定Convert.ToInt32()应该如何在这里工作。 -
@Pawel,我注意到我写的内容存在缺陷。我还没有能够测试任何东西,因为我有更多的方法要写。 usp_InsertAddress 是一个 crud 操作并返回新 ID,这就是为什么我让它将返回值转换为 Int32,这是错误的,这将是我的下一个问题,因为我有点改变了方法。我要做的是使用更新版本来编辑该方法,以了解我认为如何获取返回的 ID
标签: c# asp.net entity-framework stored-procedures