freesql “【主库】状态不可用,等待后台检查程序恢复方可使用”异常的解决。aspose报错:The document appears to be corrupted and cannot be

7 篇文章 0 订阅
5 篇文章 0 订阅

我的项目仓储FreeSqlRepository中同时引用了“FreeSql.Provider.MySql” 和“FreeSql.Provider.MySqlConnector” 两个组件。  当我使用freesql操作数据库增删改查时,系统总是报类似如下错误:【主库】状态不可用,等待后台检查程序恢复方可使用。Fatal error encountered during command execution.
其实只要删除FreeSql.Provider.MySql,系统就不会报这种错误了,但是巧合的是,“FreeSql.Provider.MySql”这个引用删除了又会引起我使用的一个老版本aspose.words插件他new document失败。

报错:Aspose.Words.FileCorruptedException:“The document appears to be corrupted and cannot be loaded.”

所以 FreeSql.Provider.MySql 还不能删除,两头为难。
经过freesql讨论群一个大佬发的链接指导。可以在.UseConnectionString()方法中配置第三个参数Type.GetType("FreeSql.MySql.MySqlProvider`1,FreeSql.Provider.MySqlConnector"),强行制定连接串使用的插件类型,可以解决主库不可用的问题。

参考链接:https://github.com/dotnetcore/FreeSql/discussions/1207

同时安装了FreeSql.Provider.MySql和FreeSql.Provider.MySqlConnector 无法使用 ExecuteMySqlBulkCopy 方法
 

二个共存时,默认根据 FreeSql.Provider.MySql 得到 的MySqlProvider 实现 ,可在UseConnectionStrings中第三个参数指定Type

UseConnectionStrings(DataType.MySql,"连接串",Type.GetType("FreeSql.MySql.MySqlProvider`1,FreeSql.Provider.MySqlConnector"));

发布后测试补充:

16点10,经过发布后测试,发现 在UseConnectionStrings中第三个参数指定Type之后,跟删除FreeSql.Provider.MySql实现的是一个效果,可以让系统不报错 主库不可用, 但是同时又让aspose.word 不能new document()了。 还是没能解决问题。

现在的重点可能还是要解决aspose.word 不能new document()的问题。


aspose.word 不能new document() 最新解决办法和原理说明
The document appears to be corrupted and cannot be loaded这个错误,本身是字符集问题。可能是aspose需要GBK字符集,但是.NETCORE6默认没有注册GBK字符集。然后刚好我用到FreeSql.Provider.MySql这个插件他帮忙注册了GBK字符集,所以aspose就没有报错,但是删除了FreeSql.Provider.MySql,aspose就没有GBK字符集了,所以在aspose使用之前要注册GBK字符集。 一行代码就行了:Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
截图如下我红框画的部分加上就好了:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeSql是一种高性能免费开源的ORM框架,可以用于在C#中操作关系型数据库。以下是在C#中使用FreeSql的步骤: 1. 安装FreeSql NuGet包 在Visual Studio中打开NuGet包管理器,搜索FreeSql并安装最新版。 2. 配置数据库连接 在App.config或Web.config文件中添加数据库连接字符串,例如: ```xml <connectionStrings> <add name="MySql" connectionString="Server=localhost;Database=mydatabase;User=root;Password=123456;"/> </connectionStrings> ``` 3. 初始化FreeSql 在应用程序启动时,初始化FreeSql并注册数据提供程序,例如: ```csharp // 初始化FreeSql var connectionString = ConfigurationManager.ConnectionStrings["MySql"].ConnectionString; var fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, connectionString) .UseAutoSyncStructure(true) .Build(); // 注册数据提供程序 FreeSql.Provider.Register<CustomMySqlProvider>(FreeSql.DataType.MySql); ``` 4. 编写数据访问代码 使用FreeSql的实体类、仓储类和LINQ语句,编写数据访问代码,例如: ```csharp // 定义实体类 public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } // 定义仓储类 public class UserRepository : FreeSqlRepository<User> { public UserRepository() : base() { } public UserRepository(UnitOfWorkManager uowm) : base(uowm) { } } // 使用LINQ语句查询数据 var users = fsql.Select<User>().Where(u => u.Age > 18).ToList(); // 使用仓储类查询数据 var userRepo = new UserRepository(); var user = userRepo.Where(u => u.Name == "Tom").FirstOrDefault(); // 使用事务提交数据 using (var uow = fsql.CreateUnitOfWork()) { var userRepo = uow.GetRepository<User>(); userRepo.Insert(new User { Name = "Jack", Age = 20 }); userRepo.Update(new User { Id = 1, Name = "Tom", Age = 22 }); uow.Commit(); } ``` 以上就是在C#中使用FreeSql的基本步骤,可以根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值