Gentle.Net学习笔记四:修改代码,使用Oracle数据库
??? 開始使用Gentle.Net的時候,我使用編譯好的類庫,可是不久就發現,如果要更好的利用Gentle.Net,你就不得不做一些修改,所以,還是使用源代碼的方式為好.
???使用源代碼,Gentle.Net作為三個項目添加的解決方案中, Gentle.Common;Gentle.FrameWork;Gentle.Provider.Oracle (根據項目的需要選擇使用那個Provider), 有一個注意事項就是要引入Gentle的密鑰對,否則不能編輯,這個在文檔中右說明,我不在贅言.但是你已可以去掉這個簽名,或者換成自己的簽名,我就是去掉了簽名使用的,這樣方便些,不用每臺機器都引入簽名!就是修改那個AssemblyInfo.cs的文檔中
[assembly: AssemblyKeyName( "Gentle" )]
去掉引號中的內容即可,要注意的是三個項目都有這個文件的.
[assembly: AssemblyKeyName( "" )]
好了,說了這么多,其實是為了引入這次的主角,Oracle!真不知道Oracle的Provider是怎么想的,字符串類型的數據字段竟然不能保存空字符串(就是引號之間甚麼都沒有,可不是Null喲),害得我折騰了半天兒,終于在網上找到了原因! 下面就是我的解決方案,修改了一個函數,把空字符串替換為Null.希望對您有所幫助.
修改函數所在位置:Client\SqlStatement.cs
private void SetParameter( IDataParameter param, object val, FieldMap fm )
??{
???Check.Verify( param.Direction == ParameterDirection.Input ||
????param.Direction == ParameterDirection.InputOutput, "Cannot set value of output parameters!" );
???// do additional checking for known types
???if( map != null && fm != null )
???{
????param.Value = GetParameterValue( val, map, fm );
???? 下面這幾行語句添加自 Gu Zhigang
????/// 解決問題:因為oracle代理驅動的原因 ,字符型數據不能插入空字符串
????//if(this.Command.Connection.GetType().Name.IndexOf("Oracle",0)>=0)
????{
?????if(param.DbType==DbType.AnsiString && param.Value.ToString()=="")
??????param.Value=DBNull.Value;
????}
???? 添加語句結束
???}
???else // unknown type - no clipping or fancy checks, just do it
???{
????param.Value = val != null ? val : DBNull.Value;
???}
??}
雖然不是真正的解決問題,但是能用就好了,要注意的就是程序中要注意這個變化.
轉載于:https://www.cnblogs.com/dajianshi/archive/2005/09/20/240423.html
總結
以上是生活随笔為你收集整理的Gentle.Net学习笔记四:修改代码,使用Oracle数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [ZT]C#的多线程机制探索(2)
- 下一篇: 看了一天小说