FluentNHibernate设置含斜杠的默认值时抛出异常
解决FluentNHibernate映射含斜杠默认值的问题
你遇到的问题是因为NHibernate生成SQL时,会把反斜杠识别为转义符,导致路径字符串被错误解析。以下是两种可靠的解决方法:
用单引号包裹路径并添加Unicode标识
在Default方法中,用单引号把路径包裹,同时前缀加上N来支持Unicode,确保SQL能正确识别整个路径:Map(x => x.FilePath).Length(500).Not.Nullable().Default(@"N'C:\Program Files\server\data\conf\groups.txt'");正确转义反斜杠
如果你不用逐字字符串(不带@),需要用双反斜杠转义路径里的反斜杠,同时用单引号包裹:Map(x => x.FilePath).Length(500).Not.Nullable().Default("'C:\\Program Files\\server\\data\\conf\\groups.txt'");要是用逐字字符串(带
@),则需要把单引号写成两个单引号来转义:Map(x => x.FilePath).Length(500).Not.Nullable().Default(@"'C:\Program Files\server\data\conf\groups.txt'");
本质原因是FluentNHibernate的Default方法会直接将传入的字符串拼接进SQL语句,反斜杠在SQL中属于转义符,必须通过上述方式处理,才能让SQL将其识别为路径的一部分。
内容的提问来源于stack exchange,提问作者Kavin404
相关产品推荐
相关产品推荐

