2012年3月20日 星期二

C# 見鬼了【這些資料目前沒有唯一的值】?


原本我寫了一段程式來產生一個 mapping 用的 DataTable,
程式碼如下:

DataTable mappingValue = SystemFuncs.GetTableByQuery(
    "SELECT key_, import_value_, mapping_value_ FROM import_mapping_item ");

DataColumn[] keys = new DataColumn[2]{mappingValue.Columns[0], mappingValue.Columns[1]};

mappingValue.PrimaryKey = keys;

某天突然就發生了錯誤,錯誤訊息如下:



查了資料半天都沒有重複的資料丫?
只好程式一行一行慢慢跑,最後發現是錯在 mappingValue.PrimaryKey = keys;


看來真的是資料重複!
想了好久才想到今天客戶設定了一個東西,如下:

AAA => AAA
AAa => AAA
Aaa => AAA
aaa => AAA

所以應該是因為大小寫不區分的關係,
所以上面這些資料會全部視為相同資料!
我拿掉這個設定之後果然程式就沒有問題了,
後來找到了一個設定,在產生 DataTable 之後設定


mappingValue.CaseSensitive = true;


之後就OK了!
害我找好久,後來還是靠用力回想說最近到底改變了甚麼才找到問題的所在!
所以記得上次沒錯跟這次發生錯誤之間到底改了甚麼東西是很重要的!

沒有留言:

張貼留言