我正在开发一个使用实体框架进行数据访问的应用程序。出于某些目的,有必要分析SqlException消息以获取更多信息。我已经发现该异常消息直接来自SQL Server。因此,要使解析过程正常工作,我需要确保在每种环境中将语言设置为相同。
我用来设置语言
SET LANGUAGE English;
出于测试目的,我做了以下事情:
SET LANGUAGE English;
SELECT * FROM ABC;
ABC不存在,因此显然会失败,并且我会收到一条错误消息。在Management Studio中,我的ErrorMessage显示如下:
这是应该的英文。
现在,当我在C#中尝试相同操作时,我会得到:
是德语
我想念什么?有任何想法吗?非常感谢...
答案 0 :(得分:2)
与其在两个ExecuteSqlCommand
调用中执行此操作,不如在一个中执行操作。
string command = "SET LANGUAGE English; SELECT * FROM ABC;";
ctx.Database.ExecuteSqlCommand(command);
ExecuteSqlCommand
将开始一个新的自动提交会话。由于选择处于另一个会话中,因此您的第一个SET LANGUAGE几乎没有任何作用。