Entity Framework - 调用带有默认参数的存储过程

13

我有一些使用“数据库优先”映射在Entity Framework中的存储过程。它会创建强类型方法,您可以调用以运行存储过程。然而,我遇到了一个重大问题,在这种情况下我没有看到任何方法可以调用这些由默认参数定义所创建的方法。这意味着:

a)我必须手动添加默认参数到方法调用中,如果默认参数值更改,那么这种方式是脆弱的。

b)手动编写方法重载。这基本上消除了从数据库生成模型的好处。

是否有人知道是否有更好的解决方案来解决这个问题?

谢谢。


你可以通过属性窗口为实体属性设置默认值。这对你有帮助吗? - Prabhu Murthy
这仍然需要我手动输入默认值 - 如果过程的默认值发生更改,就没有办法自动将其与模型同步。 - MgSam
1
你能否编写过程,从服务器提供默认值给你? - David R Tribble
2个回答

5
截至2013年1月,目前没有支持的方法让Entity Framework实现这一点。我在这里开了一个功能请求,请点击此处

1
也许你已经知道了,但是由于迁移的原因,他们关闭了你的工单,如果你想再次考虑它,应该在 Github 社区重新打开它。https://github.com/aspnet/EntityFramework6/issues - Sycraw
该网站不可用。 - Vicky Gupta

3
这里有一个折中的解决方法。我不知道EF是否支持可选参数的特性,但你可以尝试模拟它,如果你愿意改变存储过程的话。
你可以在存储过程定义中将默认值更改为 NULL ,然后在过程体中将 NULL 参数替换为所需的默认值。然后在使用EF的代码中,你可以传递 null 来指示使用默认值。这样至少默认值仅在SP本身中定义。
缺点当然包括现在NULL成为一个“out-of-band”值,这意味着你实际上不能将其传递给SP(除了必须更改你的SP,并确保所有未来的SP都使用这种奇怪的约定)。

是的,我确实建议过这样做,但它会给我们带来其他的麻烦,所以不幸的是这不是一个选项。 - MgSam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接