Я разрабатываю консольное приложение с .NET Core и EF Core (оба v3.0);и мне нужно запустить мой DbContext, используя строку, сгенерированную из другого класса.
Файл DbContext
public Arta_LuniaDBContext() { }
public Arta_LuniaDBContext(DbContextOptions<Arta_LuniaDBContext> options) : base(options) { }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(DataServices.ConnectionString);
}
Класс DataServices
public static string ConnectionString { get { return GetConnectionData(); } }
private static string GetConnectionData()
{
/// Sets the Server name, Database, UserId and Password.
string Server, Database, UserId, Password;
/// Sets the separator.
string Separator = ";";
/// Connection string [internal].
string ArtaConn = null;
/// Loads Settings.xml
XmlDocument xDoc = new XmlDocument();
xDoc.Load("Settings.xml");
/// Gets the XmlNode: DataSource
XmlNodeList xSource = xDoc.GetElementsByTagName("DataSource");
for (int i = 0; i < xSource.Count; i++)
{
/// Sets the Server name.
Server = "Server=" + xSource[i].Attributes["Server"].Value + Separator;
/// Sets the Database.
Database = "Database=" + xSource[i].Attributes["Database"].Value + Separator;
/// Sets the User id.
UserId = "User id=" + xSource[i].Attributes["UserId"].Value + Separator;
/// Sets the Password.
Password = "Password=" + xSource[i].Attributes["Password"].Value + Separator;
/// Builds the connection string.
ArtaConn = Server + Database + UserId + Password;
Colorful.Console.WriteLine(ArtaConn, System.Drawing.Color.Yellow);
// I'm using this line to test the output.
}
/// Returns~
return ArtaConn;
}
Settings.xml
<!-- Sets the Database ConnectionString -->
<DataSource Server="IP_ADDRESS\\INSTANCE" Database="DbName" UserId="MyUser" Password="MyPassword" />
В строке ConsoleWrite мой вывод отображается как:
Server=IP_ADDRESS\\INSTANCE;Database=DbName;User id=MyUser;Password=MyPassword;
И эта строка кажется мне подходящей, но когда япопробуйте подключиться к базе данных, я получаю следующую ошибку:
System.Data.SqlClient.SqlException (0x80131904): при установлении подключения к сети произошла ошибка, связанная с сетью или экземпляром.SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(провайдер: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)
Достаточно странно, если я установлю:
optionsBuilder.UseSqlServer("IP_ADDRESS\\INSTANCE;Database=DbName;User id=MyUser;Password=MyPassword;");
Я могу подключиться без проблем ...
Есть ли способ это исправить?Заранее спасибо.
[Редактировать] Исправлено;Изменено:
<DataSource Server="IP_ADDRESS\\INSTANCE" Database="DbName" UserId="MyUser" Password="MyPassword" />
На:
<DataSource Server="IP_ADDRESS\INSTANCE" Database="DbName" UserId="MyUser" Password="MyPassword" />