mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
FreeSql.Provider.Odbc 实现 ODBC 访问数据库,ODBC 属于比较原始的技术,更新慢,各大数据库厂支持得标准不一,不到万不得已最好别用 odbc,坑比较多。
 | 
						||
 | 
						||
FreeSql.Provider.Odbc 做了多种数据库的专用实现:SqlServer、PostgreSQL、Oracle、MySql、达梦、人大金仓,和一种通用实现。
 | 
						||
 | 
						||
和原来的 FreeSql.Provider.SqlServer 等 ado.net 相比,只支持较少的基础类型,其他功能几乎都有,包括 CodeFirst 自动迁移。
 | 
						||
 | 
						||
国产数据库大多数都兼容 SqlServer、PostgreSQL、Oracle、MySql 这四种数据库,所以它们也可以用来访问国产数据库。
 | 
						||
 | 
						||
# 自定义适配
 | 
						||
 | 
						||
为了让用户自己适配更多的数据库,比如连接 mssql 2000、db2 等数据库,牺牲了一些功能:
 | 
						||
 | 
						||
- 不支持 CodeFirst 自动迁移
 | 
						||
- 不支持 DbFirst 接口方法的实现
 | 
						||
- 不支持 原来的分页方法,需要自行判断 id 进行分页
 | 
						||
- 只支持较少的基础类型:bool,sbyte,short,int,long,byte,ushort,uint,ulong,double,float,decimal,DateTime,byte[],string,Guid
 | 
						||
 | 
						||
使用者只需求重写类 FreeSql.Odbc.Default.OdbcAdapter 就可以自定义访问不同的数据库。
 | 
						||
 | 
						||
我们默认做了一套 sqlserver 的语法和映射适配,代码在 [Default/OdbcAdapter.cs](https://github.com/2881099/FreeSql/blob/master/Providers/FreeSql.Provider.Odbc/Default/OdbcAdapter.cs),请查看代码了解。
 | 
						||
 | 
						||
```csharp
 | 
						||
class Mssql2000Adapter : FreeSql.Odbc.Default.OdbcAdapter
 | 
						||
{
 | 
						||
    public override string InsertAfterGetIdentitySql => "SELECT SCOPE_IDENTITY()";
 | 
						||
    //可以重写更多的设置
 | 
						||
}
 | 
						||
 | 
						||
fsql.SetOdbcAdapter(new Mssql2000Adapter());
 | 
						||
```
 | 
						||
 | 
						||
适配好新的 OdbcAdapter 后,请在 FreeSqlBuilder.Build 之后调用 IFreeSql.SetOdbcAdapter 方法生效。
 |