[很久之前做的一点翻译,原文出处已经忘了]
在一个 DataSet 中,大小写敏感似乎只是针对于数据而非架构。
在一个 DataSet 中,表名和列名默认情况下是大小写不敏感的。也就是说,在 DataSet 中一个叫做“Customer”的表,也可以被叫做“customer”,这符合大多数数据库的命名约定,包括 Sql Server 的默认情况下。而数据元素的名字只有在如下情况下才无法区分,仔细看看下面的代码:
1DataSet ds = new DataSet();
2
3DataTable t1 = new DataTable( " ABC " );
4
5DataTable t2 = new DataTable( " abc " );
6
7ds.Tables.Add(t1);
8
9bool b1 = ds.Tables.Contains( " Abc " );
10
11// 返回 true, 大小写不敏感
12![]()
13DataTable t3 = ds.Tables[ " Abc " ];
14
15// 返回 ABC
16![]()
17ds.Tables.Add(t2);
18
19bool b2 = ds.Tables.Contains( " ABC " ); // true
20![]()
21bool b3 = ds.Tables.Contains( " abc " ); // true
22![]()
23bool b4 = ds.Tables.Contains( " Abc " ); // 现在返回 false -- 现在大小写敏感了
24![]()
25DataTable t4 = ds.Tables[ " ABC " ]; // ok
26![]()
27DataTable t5 = ds.Tables[ " abc " ]; // ok
28
29// 这会抛出异常 DataTable t6 = ds.Tables["Abc"]
30![]()
31![]()
由此可见,默认情况下,表名是大小写不敏感的,但是当集合中出现仅有大小写不同的表名时,表名就会变成大小写敏感(似乎很智能啊),这个规则也同样适用于 DataColumn, DataRelation and Constrains。