对Gentle.Net的小改动

博客介绍了Gentle.NET和Retina,指出Gentle.NET(1.2.5)多数据库存在BUG。针对其在OracleAnalyzer.cs分析CLOB字段长度问题、OracleFactory.cs和SQLServerFactory.cs中string类型对应数据库类型问题进行修改,最后将XML中的Analyer设为Full,让Gentle自动解析表信息。

1.发现Gentle.NET还是比较不错的,另一个Retina好像也比较好。
2.Gentle.NET(1.2.5)多数据库还不是很好有BUG,还好有源码,自己改改了:
1)它在OracleAnalyzer.cs中,会去数据库那里分析原有表中的每个字段、字段类型、字段长度。但分析CLOB时,将其长度定为了4000,这就不好了,长的数据会被它截断。所以,改了一下:

fm.SetDbType( sr.GetString( i, "Type" ), false );

fm.SetIsNullable( GetBoolean( sr.GetString( i, "IsNullable" ) ) );

if( sr.GetString( i,"Type") == "CLOB")
{
    fm.SetSize(0);
}
else if( sr[ i, "Size" ] != null )
{
    fm.SetSize( sr.GetInt( i, "Size" ) );
}

2) 我们在项目中需要把string转为NVarchar(Oracle中对应的是Varchar2?),而原来好像是Varchar所以又要改改:
OracleFactory.cs中:
public override long GetDbType( Type type)
{
    ...
   switch(...)
    {
       ...
       else if( type.Equals( typeof(string) ) )
          result = OracleType.NvarChar;
       else if ...
       ...
    }
}

3)然后SQL Server 中与2)相似的地方也改为NVarChar,在文件SQLServerFactory.cs中:
public override long GetDbType( Type type)
{
    ...
   switch(...)
    {
       ...
       else if( type.Equals( typeof(string) ) )
          result = SqlDbType.NvarChar;
       else if ...
       ...
    }
}

3.最后,把XML中的Analyer设为Full,这样Gentle就会自动从数据库中解析表,并保存表中的各种信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值