DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]

时间:2023-01-04 00:44:22

[很久之前做的一点翻译,原文出处已经忘了]

在一个 DataSet 中,大小写敏感似乎只是针对于数据而非架构。

在一个 DataSet 中,表名和列名默认情况下是大小写不敏感的。也就是说,在 DataSet 中一个叫做“Customer”的表,也可以被叫做“customer”,这符合大多数数据库的命名约定,包括 Sql Server 的默认情况下。而数据元素的名字只有在如下情况下才无法区分,仔细看看下面的代码:

 1 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]DataSet ds  =   new  DataSet();
 2 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
 3 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]DataTable t1  =   new  DataTable( " ABC " );
 4 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
 5 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]DataTable t2  =   new  DataTable( " abc " );
 6 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
 7 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]ds.Tables.Add(t1);
 8 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
 9 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] bool  b1  =  ds.Tables.Contains( " Abc " );
10 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
11 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] //  返回 true, 大小写不敏感
12 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
13 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]DataTable t3  =  ds.Tables[ " Abc " ]; 
14 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
15 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] //  返回 ABC 
16 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
17 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]ds.Tables.Add(t2);
18 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
19 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] bool  b2  =  ds.Tables.Contains( " ABC " );  //  true 
20 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
21 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] bool  b3  =  ds.Tables.Contains( " abc " );  //  true 
22 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
23 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] bool  b4  =  ds.Tables.Contains( " Abc " );  //  现在返回 false -- 现在大小写敏感了  
24 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
25 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]DataTable t4  =  ds.Tables[ " ABC " ];  //  ok 
26 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
27 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]DataTable t5  =  ds.Tables[ " abc " ];  //  ok 
28 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
29 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译] //  这会抛出异常 DataTable t6 = ds.Tables["Abc"]
30 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]
31 DataSet 的 Tables 属性对表名大小写敏感性的解惑[翻译]


  由此可见,默认情况下,表名是大小写不敏感的,但是当集合中出现仅有大小写不同的表名时,表名就会变成大小写敏感(似乎很智能啊),这个规则也同样适用于 DataColumn, DataRelation and Constrains。