Я пытаюсь подключиться к существующей базе данных SQL Server с помощью приложения UWP и использую EF Core 2.2.4, но получаю следующую ошибку:
System.Data.SqlClient.SqlException: «При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик TCP, ошибка: 40 — не удалось открыть соединение с SQL Server)'
Я пытался исследовать проблему в Интернете, используя Google и просматривая форумы, но пока ничто не указывает мне на решение. Я обнаружил форму ответа '16 о том, что SQLite является единственным вариантом базы данных, поддерживаемым EF и UWP, но это было 3 года назад.
По сути, я просто пытаюсь получить список объектов таблицы, возвращаемых для отображения на моем UWP в ListView. EF Core находится в отдельном проекте с именем «DataProject» со всеми классами в папке моделей, которая добавляется как ссылка на мой проект UWP «UWPProject». Все компилируется нормально, но при отладке я получаю сообщение об ошибке 40 при попытке извлечь данные из базы данных SQL с помощью EF Core.
UWPProject - MainPage.xaml File
<Page
x:Class = "UWPProject.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local = "using:LocalPSInvestigation"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d"
xmlns:controls = "using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:models = "using:DataProject.Models"
Loaded = "Page_Loaded"
Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBlock x:Name = "textBlock" TextWrapping = "Wrap" Text = "My Complaints/Requests" VerticalAlignment = "Center" HorizontalAlignment = "Center" FontFamily = "MS Reference Sans Serif" FontSize = "24" Width = "300"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "*"/>
<ColumnDefinition Width = "*"/>
<ColumnDefinition Width = "*"/>
<ColumnDefinition Width = "*"/>
<ColumnDefinition Width = "*"/>
<ColumnDefinition Width = "*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height = "*"/>
<RowDefinition Height = "*"/>
<RowDefinition Height = "*"/>
</Grid.RowDefinitions>
<TextBox x:Name = "idBox" Grid.Column = "0" Grid.Row = "0" TextWrapping = "Wrap" Text = "" PlaceholderText = "ID" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0" Width = "320" />
<TextBox x:Name = "dateBox" Grid.Column = "1" Grid.Row = "0" TextWrapping = "Wrap" Text = "" PlaceholderText = "Date" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0,0,0,0" />
<TextBox x:Name = "addrBox" Grid.Column = "2" Grid.Row = "0" TextWrapping = "Wrap" Text = "" PlaceholderText = "Address" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0,0,0,0" />
<TextBox x:Name = "countyBox" Grid.Column = "3" Grid.Row = "0" TextWrapping = "Wrap" Text = "" PlaceholderText = "County" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0,0,0,0" />
<TextBox x:Name = "cityBox" Grid.Column = "4" Grid.Row = "0" TextWrapping = "Wrap" Text = "" PlaceholderText = "City" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0,0,0,0" />
<TextBox x:Name = "phoneBox" Grid.Column = "5" Grid.Row = "0" TextWrapping = "Wrap" Text = "" PlaceholderText = "Phone" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0,0,0,0" />
<TextBox x:Name = "searchBox" Grid.Column = "4" Grid.Row = "1" TextWrapping = "Wrap" Text = "" FontFamily = "MS Reference Sans Serif" FontSize = "12" TextAlignment = "Center" VerticalAlignment = "Center" BorderThickness = "1" Grid.ColumnSpan = "1" Margin = "0,0,0,0" />
<TextBlock x:Name = "searchLabel" Grid.Column = "3" Grid.Row = "1" TextWrapping = "Wrap" Text = "Search:" VerticalAlignment = "Center" HorizontalAlignment = "Right" FontFamily = "MS Reference Sans Serif" FontSize = "12"/>
<ListView Name = "Complaints" SelectionMode = "Single" ScrollViewer.VerticalScrollBarVisibility = "Auto" ScrollViewer.IsVerticalRailEnabled = "True" ScrollViewer.VerticalScrollMode = "Enabled"
ScrollViewer.HorizontalScrollMode = "Enabled" ScrollViewer.IsHorizontalRailEnabled = "True" ScrollViewer.HorizontalScrollBarVisibility = "Auto" Grid.Row = "2"
Grid.Column = "0" Grid.ColumnSpan = "6" Width = "1920" Height = "200">
<ListView.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "ID" TextAlignment = "Center" Width = "320" />
<TextBlock Text = "Date" TextAlignment = "Center" Width = "320" />
<TextBlock Text = "Business Name" TextAlignment = "Center" Width = "200" />
<TextBlock Text = "Address" TextAlignment = "Center" Width = "320" />
<TextBlock Text = "County" TextAlignment = "Center" Width = "320" />
<TextBlock Text = "City" TextAlignment = "Center" Width = "240" />
<TextBlock Text = "Phone" TextAlignment = "Center" Width = "200" />
</StackPanel>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate x:DataType = "models:TableObject">
<StackPanel Orientation = "Horizontal">
<TextBlock Name = "ComplaintId" TextAlignment = "Center" Text = "{x:Bind ProgramComplaintId}" Width = "320"/>
<TextBlock Name = "Date" TextAlignment = "Center" Text = "{x:Bind Date}" Width = "320"/>
<TextBlock Name = "BusinessName" TextAlignment = "Center" Text = "{x:Bind BusinessName}" Width = "200"/>
<TextBlock Name = "Address" TextAlignment = "Center" Text = "{x:Bind Address}" Width = "320"/>
<TextBlock Name = "County" TextAlignment = "Center" Text = "{x:Bind County}" Width = "320"/>
<TextBlock Name = "City" TextAlignment = "Center" Text = "{x:Bind City}" Width = "240"/>
<TextBlock Name = "Phone" TextAlignment = "Center" Text = "{x:Bind Phone}" Width = "200"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</StackPanel>
</Page>
UWPProject - MainPage.xaml.cs File
------------------------------------------------------------------------------
private void Page_Loaded(object sender, RoutedEventArgs e)
{
using(var db = new dbContext())
{
ListViewName.ItemsSource = db.TableObject.ToList();
}
}
------------------------------------------------------------------------------
DataProject - DBContext.cs File
------------------------------------------------------------------------------
public DbContext()
{
}
public DbContext(DbContextOptions<DbContext> options)
: base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
optionsBuilder.UseSqlServer("Server=XXXXXXX;Database=XXXXX;user id=XXXXXXXXX;password=XXXXXXX");
}
}
------------------------------------------------------------------------------
Я ожидал, что это вытащит список объектов таблицы и назначит его источнику элементов, но вместо этого я получаю сообщение об ошибке подключения. Я знаю, что указанное имя пользователя/пароль работает и что сервер и база данных существуют, потому что я использовал команду scaffold для создания классов.
Поддерживает ли UWP подключения SQL Server к EF Core? Кажется, я не могу найти ничего, что говорило бы об этом.
Я попробовал ваше предложение, но все еще получаю указанную ошибку. Я проверил и подключился к SQL Server с TCP/IP-соединением и учетными данными. Я определенно в растерянности, я даже активировал Integrated Security, как предложил другой пользователь.





UWP поддерживает подключение SQL Server к EF Core. Пожалуйста, следуйте этому нить, чтобы изменить строку подключения для использования TCP/IP, чтобы увидеть, будет ли это работать.