gpt4 book ai didi

c# - 获取上下文连接并将其用作其他地方的连接

转载 作者:可可西里 更新时间:2023-11-01 08:29:18 25 4
gpt4 key购买 nike

我工作的环境中,企业主机应用程序通过 ProgID 调用具有已实现 COM 接口(interface)的客户端应用程序。这就是主机应用程序的程序员允许使用插件增强应用程序的方式。

Host app <-> COM interface <-> Client app

客户端应用程序可以使用提供的 COM 接口(interface)中的方法。

其中一个方法是 RunSqlQuery(rawSqlQuery)。它有可能在主机应用程序的登录用户范围内与 SQL 完全通信(基于连接身份验证类型,它可以是 Windows 或 SQL 用户)。

我正在寻找一种方法来获取从主机应用程序启动的当前连接上下文,并将其用作 DbContext 的连接。

为什么?

  1. 我想使用一些 ORM 进行数据绑定(bind)、参数绑定(bind)、更改跟踪器等。
  2. 我可以为此使用我自己的显式 SQL 连接,但是使用我自己的 SQL 连接,我无法访问本地临时表,这些表是在主机应用程序启动时创建的。主机应用程序严重依赖存储过程,而存储过程又与提到的本地临时表一起运行
  3. 在使用显式 SQL 连接的情况下(主 SQL 连接持有主机应用程序),我需要在连接字符串中管理连接凭据(当不允许 SQL Server 身份验证混合模式时)

为清楚起见,问题出在哪里,类似的东西在 SQL CLR 世界中众所周知:

在 SQL CLR UDF 中,可以使用 context connection=true 作为 SqlConnection 实例的连接字符串(更多 here)。

他们在上面的链接中写道:

The connection is in a different database session than the stored procedure or function, it may have different SET options, it is in a separate transaction, it does not see your temporary tables, and so on.

在该链接的其他地方:

You probably want the stored procedure or function to execute in the context of that connection, along with its transaction, SET options, and so on. This is called the context connection.

最佳答案

如果你在 asp.net core 中工作,你只需要配置connectionstring 在您的 appsettings.json 文件中。您的连接字符串设置通常显示在主机中。如果您找不到它,请向在线顾问询问您的连接字符串。当我遇到非常相似的连接问题时,这就是我解决连接问题的方法

appsettings.json

"ConnectionStrings": { DefaultConnection": "Here_is_the_connectionstringSettings_that_is_given_by_your_host"}

关于c# - 获取上下文连接并将其用作其他地方的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50831496/

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