【发布时间】:2022-01-08 03:42:40
【问题描述】:
大家好,
我继承了多个桌面应用程序,这些应用程序严重依赖存储过程进行数据操作。这些应用程序是用 VB6 编写的,我目前正试图弄清楚如何将它们移植到 .Net 5 或 .Net 6。
我了解 Entity Framework Core 能够执行存储过程。但是,在video I watched recently 中,我了解到 Entity Framework Core 通过存储过程 sp_executesql 执行数据函数,以允许执行开发人员可能动态生成的任何过程。
但是,正如上面链接的视频所述,这为桌面应用程序带来了安全漏洞。要触发 sp_executesql,桌面应用程序的用户必须具有可以在其系统上触发它的凭据。这些值可能被加密,但加密并非无懈可击。
如果我创建和使用的数据库凭据无法访问 sp_executesql,但可以访问我同事创建的存储过程,那么 Entity Framework 是否能够触发后者?
【问题讨论】:
-
为什么需要一个存储过程来执行动态生成的 SQL?你真的需要这种能力吗?无需使用 SP 即可在客户端完成。
-
也许我应该改写一下。我不试图使用动态生成的 sql。我正在尝试通过实体框架调用我同事的 SP,这样我就不必重做他们的所有工作。
标签: c# database entity-framework permissions credentials