作为一个开发团队,我正在尝试将一个旧的 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,似乎没有什么新东西坏了,但错误仍然存在。
我通过将我的新 Blazor 项目和预先存在的 InternalDAL 项目的 NuGet 包更新到 v5.1.0 来解决这个问题(并发现了新的错误,但不再是这个)
然后我在整个解决方案中进行了查找和替换,并将对
System.Data.SqlClient
的每个引用更改为Microsoft.Data.SqlClient