2 回答
TA贡献1827条经验 获得超9个赞
使用正确的工具完成工作 - SqlConnectionStringBuilder 类
生成器将转义反斜杠并为 Sql Server 连接构建正确的连接字符串。
var builder = new SqlConnectionStringBuilder
{
DataSource = @"IP_ADDRESS\INSTANCE",
InitialCatalog = "DbName",
UserID = "MyUserId",
Password = "MyPassword"
};
var connectionString = builder.ConnectionString;
// Use connection string
optionsBuilder.UseSqlServer(connectionString );
因此,您的方法可以如下所示:
private SqlConnectionStringBuilder BuilderFromElement(XElement source)
{
return new SqlConnectionStringBuilder
{
DataSource = source.Attribute("Server")?.Value,
InitialCatalog = source.Attribute("Database")?.Value,
UserID = source.Attribute("UserID")?.Value,
Password = source.Attribute("Password")?.Value
};
}
private string GetConnectionString()
{
var settings = XDocument.Load("Settings.xml");
var allConnectionStrings =
settings.Descendants("DataSource")
.Select(BuilderFromElement)
.Select(builder => builder.ConnectionString)
return allConnectionStrings.FirstOrDefault();
}
TA贡献1777条经验 获得超3个赞
查看 xml 文件中反斜杠的用法。
在某些上下文中,可以是转义的 \,作为文字,它是 2 个斜杠。\\
此代码说明了这一点:这些字符串不相等。
String s= "Server=IP\\INSTANCE_NAME;Database=db;User id=User ;Password=pwd;";
String s2= @"Server=IP\\INSTANCE_NAME;Database=db;User id=User ;Password=pwd;";
Console.WriteLine(s2== s);
如果您尝试使用localhost进行此操作,它是否按照您的期望方式工作?如果是这样:罪魁祸首是 .
您还可以查看这是否有效。
optionsBuilder.UseSqlServer(@"Server=Server=IP\\INSTANCE_NAME;Database=DB;User id=User ;Password=pwd;");
希望这有帮助!
- 2 回答
- 0 关注
- 312 浏览
添加回答
举报