SQLClient 在引用其他项目时不工作 - 无法加载文件或程序集

问题描述 投票:0回答:1

作为一个开发团队,我正在尝试将一个旧的 Silverlight 应用程序转换成闪亮的新东西。这是公司的一个内部应用程序,现在微软已经开始强制网站在 Edge 中通过 IE 打开(而获得新笔记本电脑的员工不能很容易地在它们上安装 Silverlight)

我希望在 Blazor/Razor 中创建一个新的前端并将其连接到仍在运行的 C# 后端,但是当我尝试从预先存在的 SQLConnection 方法将数据加载到表中时,出现错误“无法加载文件或程序集 'System.Data.SqlClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。系统找不到指定的文件。”

我从剃刀页面的@code部分引用了这个方法:

@code {
    public InternalDAL.PaymentDataSet pendingTransactions = 
    InternalDAL.PaymentDatabaseHelper.GetPaymentRecordsPending(null);
}

就调用方法 GetPaymentRecordsPending() 而言,它是有效的,它又深入挖掘了 InternalDAL 项目:

public static PaymentDataSet GetPaymentRecordsPending(string Id) {

    PaymentDataSet data = new PaymentDataSet ();

    data.EnforceConstraints = false;

    PaymentRecordTableAdapter adapter = new PaymentRecordTableAdapter();

    adapter.FillWithPendingById (data.PaymentRecord, Id);
    
    return data;

}

但它在调用“FillWithPendingById”的行上失败,并返回上面的 SQLClient 错误。

我可以在同一 InternalDAL 项目中导航到该方法,但它位于该项目的单独文件中; InternalDAL.PaymentDataSet.Designer.cs

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
[global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
[global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]

public virtual int FillWithPendingById(PaymentDataSet.PaymentRecordDataTable dataTable, string Id) {

    this.Adapter.SelectCommand = this.CommandCollection[3];

    if ((StudentId == null)) {
        this.Adapter.SelectCommand.Parameters[1].Value = 
        global::System.DBNull.Value;
    }
    else {
        this.Adapter.SelectCommand.Parameters[1].Value = ((string)(Id));
    }

    if ((this.ClearBeforeFill == true)) {
        dataTable.Clear();
    }

    int returnValue = this.Adapter.Fill(dataTable);

    return returnValue;
}

这个过程还有一层(CommandCollection),但我认为代码没有走那么远,它设置了 SQL 查询。它只是从四个存储过程的列表中选择,这些存储过程都使用相同的连接。

我尝试使用 nuget 将 SQLClient 导入我的新 Blazor 前端,但没有任何变化。

我已经确认 InternalDAL 已经在引用 system.data.sqlclient(并且多年来一直在我公司的活动服务器上运行)

我已经从旧的 web.config 文件中复制了连接字符串,并仔细检查了它们。

我想避免从头开始重写查询,因为我才刚刚开始这个项目,而且还必须重做后端将使它变得不可行。我真的很想能够在某处更正参考/包,并让旧后端开始正常工作。

更新

我已经将 InternalDAL 项目的目标框架从 3.5 更新到 4.8,似乎没有什么新东西坏了,但错误仍然存在。

c# razor blazor sqlclient
1个回答
0
投票

我通过将我的新 Blazor 项目和预先存在的 InternalDAL 项目的 NuGet 包更新到 v5.1.0 来解决这个问题(并发现了新的错误,但不再是这个)

然后我在整个解决方案中进行了查找和替换,并将对

System.Data.SqlClient
的每个引用更改为
Microsoft.Data.SqlClient

© www.soinside.com 2019 - 2024. All rights reserved.