错误如下:
System.TypeInitializationException: “DAL.util.FreeSqlUtil”的类型初始值设定项引发异常。 ---> System.Exception: 缺少 FreeSql 数据库实现包:FreeSql.Provider.SqlServer.dll,可前往 nuget 下载;如果存在 FreeSql.Provider.SqlServer.dll 依然报错(原因是环境问题导致反射不到类型),请在 UseConnectionString/UseConnectionFactory 第三个参数手工传入 typeof(FreeSql.SqlServer.SqlServerProvider<>)
在 FreeSql.FreeSqlBuilder.<>c__35`1.<Build>b__35_8(String dll, String providerType) 位置 E:\github\FreeSql\FreeSql\FreeSqlBuilder.cs:行号 257
在 FreeSql.FreeSqlBuilder.Build[TMark]() 位置 E:\github\FreeSql\FreeSql\FreeSqlBuilder.cs:行号 270
在 FreeSql.FreeSqlBuilder.Build() 位置 E:\github\FreeSql\FreeSql\FreeSqlBuilder.cs:行号 244
在 DAL.util.FreeSqlUtil..cctor() 位置 D:\netproject\AirPresureSystem\DAL\util\FreeSqlUtil.cs:行号 16
--- 内部异常堆栈跟踪的结尾 ---
在 DAL.SysAdminService.SysAdminLogin(Int32 LoginId, String LoginPwd) 位置 D:\netproject\AirPresureSystem\DAL\service\SysAdminService.cs:行号 28
在 MS_UI.FrmLogin.btn_login_Click(Object sender, EventArgs e) 位置 D:\netproject\AirPresureSystem\AirPresureSystem\FrmLogin.cs:行号 67
在 System.Windows.Forms.Control.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
在 System.Windows.Forms.Button.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
解决办法如下:
- 检查是否安装了FreeSql以及FreeSql.Provider.SqlServer包,若未安装,请在项目->管理NuGet程序包中添加相关包。
- 请在你创建FreeSql单例的代码中添加第三个参数,具体如下:
public static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=你的连接;User Id=你的用户名;Password=你的密码;Initial Catalog=你的数据库;Encrypt=True;TrustServerCertificate=True;Pooling=true;Min Pool Size=1",typeof(FreeSql.SqlServer.SqlServerProvider<>))
.Build(); //请务必定义成 Singleton 单例模式