dotnetcore / FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, QuestDB orm, MsAccess orm.
http://freesql.net
MIT License
3.99k stars 842 forks source link

如何在一个项目中同时使用FreeSql.Provider.Oracle FreeSql.Provider.OracleOledb ? #1760

Open netty2019 opened 1 month ago

netty2019 commented 1 month ago

我的项目中需要访问不同版本的Oracle数据库,使用了下面两个Oracle Provider,发现只有一个库起作用,另外一个用不了,去掉一个,另外一个就可以访问, 请教一下,有没有办法同时使用这个两个库,谢谢 PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.815" PackageReference Include="FreeSql.Provider.OracleOledb" Version="3.2.805"

luoyunchong commented 1 month ago

参考第9点

https://github.com/dotnetcore/FreeSql/discussions/1207

可使用的参数Type可参考

https://github.com/dotnetcore/FreeSql/blob/master/FreeSql/FreeSqlBuilder.cs#L279

case DataType.Oracle:
    type = Type.GetType("FreeSql.Oracle.OracleProvider`1,FreeSql.Provider.Oracle")?.MakeGenericType(typeof(TMark));
    if (type == null) type = Type.GetType("FreeSql.Oracle.OracleProvider`1,FreeSql.Provider.OracleOledb")?.MakeGenericType(typeof(TMark)); //基于 oledb 实现,解决 US7ASCII 中文乱码问题
    if (type == null) throwNotFind("FreeSql.Provider.Oracle.dll", "FreeSql.Oracle.OracleProvider<>");
    break;