zoukankan      html  css  js  c++  java
  • 拜读websharp时,发现的几处问题(二)

         4.在持久管理对象PersistanceManager.cs的实现SingleTablePM.cs文件的ExecuteNonQuery方法,在实例化参数时
         仅指定对应的字段名及字段值,未指定当前参数的DbType类型,这样所有参数的类型都会默认为DbType.AnsiString
         当然这在MSSqlServer里可能没问题(测试过,未发现异常),但在Oracle数据库中除字符类型外的Data,Number等都会
         出错,所以此处我认为必须加入DbType类型。关于每个字段的DbType我们在生成实体时就已经存在,所以应当直接读取对应字段的DbType就可以了,由于时间关系,未去深究此种方法的实现,暂由下面代码代替实现:

     1     private void ExecuteNonQuery(EntityData entity,SqlStruct sql)
     2 
    25 
    26 /**/
    35 private static System.Data.DbType GetDbType(Type type)
    36 
    61


         5.在SqlGenerator的实现中,oracle与SqlServer的参数形式也是不同的,有“:”与“@”之分,所以也做以修改,在抽象类SqlGenerator
         根据不同数据为类型设置不同参数形式,代码如下:
         在Websharp.ORM.Service项目的SqlGenerator.cs文件中修改加入如下代码:

     1
     2 public static string GetDataType(DatabaseProperty pp)
     3 
    24
    25 public static SqlGenerator Instance(DatabaseProperty pp)
    26 
    33
    34


     在DefaultSqlGenerator中加入如下代码:
     public static string mstr_DataType = ":";    
     其它参数项修改全部由此表态变量替换
     parameters[i] = mstr_DataType + columns[i];

  • 相关阅读:
    阿里云ECS安全组之新手不得不面对的问题
    【云栖风向标】VOL.3:阿里云:对不起_这个官司我不服!
    Linux全自动安装wdcp面板脚本
    “程序员”和“码农”究竟有什么区别?
    安卓新标准出台_告别乱弹窗_你的手机真会省电么?
    16年程序员平均工资122478元_你拖后腿了没?
    6.5世界环境日!来聊聊那些你想不到的环保黑科技?
    小扎曝Facebook北极数据中心图片_最先进数据中心都建在哪?
    js之单例模式
    js 之 call 、 apply
  • 原文地址:https://www.cnblogs.com/linfuguo/p/336706.html
Copyright © 2011-2022 走看看