实体框架-使用默认参数调用存储过程

本文关键字:参数 调用 存储过程 默认 框架 实体 | 更新日期: 2023-09-27 17:54:27

我使用数据库优先在实体框架中映射了一些存储过程。它创建强类型方法,您可以调用这些方法来运行存储过程。但是,我遇到了一个严重的问题,因为我没有看到任何方法可以调用它使用存储过程中定义的默认参数创建的这些方法。这意味着:

a)我必须手动将默认参数添加到方法调用中,如果默认参数值发生变化,这是很脆弱的。

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

有谁知道这个问题有更好的解决办法吗?

谢谢。

实体框架-使用默认参数调用存储过程

截至2013年1月,没有支持的方法来让实体框架做到这一点。

我在这里打开了一个功能请求

这里有一个简单的解决方法。我不知道EF中是否有支持可选参数的特性,但如果你愿意更改存储过程,你可以尝试模拟它。

您可以将存储过程定义中的默认值更改为NULL,然后在过程体中将NULL参数替换为所需的默认值。然后从使用EF的代码中,您可以通过null来指示使用默认值。这样,至少默认值只在SP本身中定义。

缺点当然包括现在NULL成为"带外"值,这意味着如果您需要的话,您实际上不能将其传递给SP(除了必须更改您的SP并确保所有未来的SP使用这种奇怪的约定之外)