我们目前在数据库中有许多类型为varchar
的列。使用它们的应用程序在C#中,它使用Linq2Sql进行通信(或称之为通信)。
我们希望支持unicode字符,这意味着我们必须将varchar
列转换为nvarchar
。这是安全的操作吗?是仅仅更改列类型和更新dbml文件的问题,还是需要做更多的事情? C#代码有什么变化吗?我是否需要以某种方式手动转换数据库中已存在的文本,还是为我处理?
答案 0 :(得分:2)
从varchar / char到nvarchar / nchar应该是非常安全的。我做了好几次,没有遇到任何问题。但这只取决于我的经验!
答案 1 :(得分:2)
另外请记住,nvarchar列的最大长度为4000,这是varchar 8000的一半。
答案 2 :(得分:0)
除了可以测量它之外的小的全局性能影响之外,如果您突然发送不兼容的类型,由于查询计划不同,可能会产生性能影响。但是如果你在整个板上使用nvarchar是不应该发生的(一般情况下,如果你将varchars发送到将它作为nvarchar处理的东西,它更有可能发生。
答案 3 :(得分:0)
有时你会更好地使用nvarchar,因为L2S倾向于为varchar列传递nvarchar参数。除此之外,是的,你将使用更多的磁盘空间db-side,但现在这应该不是问题。
至于转换,涉及的列上的索引和FK约束(如果有的话)将受到影响,因此您需要脚本删除并根据需要重新创建它们......
答案 4 :(得分:0)
可能不是问题,因为我假设您打算从ASCII,ISO-8859-1(或类似的东西)转到UTF-8,但如果没有,请确保您知道SQL Server使用什么进程来设置更改表格时的正确编码。