Kev*_*cht 10 c# sql-server asp.net code-analysis asp.net-membership
我目前在SQL Server数据库中以小写形式存储规范化版本的字符串.例如,在我的Users表中,我有一个UserName和一个LoweredUserName字段.根据上下文,我使用T-SQL的LOWER()函数或C#的String.ToLower()方法生成用户名的小写版本以填充LoweredUserName字段.根据Microsoft的指南和Visual Studio的代码分析规则CA1308,我应该使用C#的String.ToUpperInvariant()而不是ToLower().根据微软的说法,这既是性能问题也是全球化问题:转换为大写是安全的,而转换为小写可能会导致信息丢失(例如,土耳其语'I'问题).
如果我转而使用ToUpperInvariant进行字符串规范化,我也必须更改我的数据库模式,因为我的模式基于Microsoft的ASP.NET成员资格框架(请参阅此相关问题),该模式将字符串规范化为小写.
微软是不是通过告诉我们在C#中使用大写规范化而自相矛盾,而它在Membership表和程序中自己的代码是使用小写规范化吗?我应该将所有内容切换到大写规范化,还是继续使用小写归一化?
回答你的第一个问题,是的,微软有点不一致。要回答您的第二个问题,在您确认这会导致应用程序出现瓶颈之前,请勿切换任何内容。
想想你可以在你的项目上取得多少进展,而不是浪费时间切换一切。您的开发时间比您从此类更改中获得的节省更有价值。
记住:
过早的优化是编程中万恶(或至少是大部分)的根源。——唐纳德·高德纳