gpt4 book ai didi

c# - Entity Framework - 数据库优先 - 拦截 DbContext

转载 作者:行者123 更新时间:2023-11-30 18:18:45 25 4
gpt4 key购买 nike

我正在开发一个使用 Entity Framework 6 的 Web API。Entity Framework 的连接字符串使用公司标准加密进行加密。 (sql server 2014)我可以很好地解密连接字符串,但我一直无法弄清楚如何拦截 DbContext 来设置解密的连接字符串。 (在 Web.config 具有加密的连接字符串之前,我能够很好地运行 API,并且所有数据库调用都正常工作)

下面的代码显示了到目前为止我是如何规避这个问题的。我为我的上下文类创建了一个分部类,因为 Peliquin.Context.cs 类是生成的代码。我正在解密连接字符串,正如我所验证的那样,它看起来完全正确,然后将其传递给此类。之前的代码是 :base("name=ConnectionName")

错误消息似乎 DbContext 无法将实际的连接字符串传递给它。但是,如果我传入连接名称,则会遇到连接字符串被加密的问题。

我已经搜索过,但一直无法找到解决这个看似简单问题的方法。任何帮助将不胜感激。

Imgur Imgur Imgur

web.config 连接字符串,在我在运行时解密之前:Imgur

旁注:该网站将部署到多个客户端站点,每个站点都有自己的数据库凭据。在安装程序将 API 和 UI Web 应用程序安装到服务器上时,另一个应用程序运行,将 web.config 文件更新为正确的客户端数据库连接。这整个过程是没有用户交互的。如果有人能想到一种更好的方法来更改 web.config 连接字符串,然后对其进行加密,并且无需人工交互,请随时向我提出替代解决方案。

最佳答案

好吧,我似乎自己解决了这个问题。在动态生成的代码 Peliquin.Context.cs 中,我传入解密的连接字符串,一切正常。我不喜欢这个解决方案的地方是,下次使用最新的数据库更改更新 edmx 文件时,该文件将再次动态生成,清除我的更改,这会造成严重破坏将来。让另一个类采用构造函数,似乎仍然是一个更好的解决方案。

public PeliquinDbContext(string connection):base(connection)
{
}

关于c# - Entity Framework - 数据库优先 - 拦截 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40668703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com