Существующая база данных UWP EF Core

Я пытаюсь подключиться к существующей базе данных 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? Кажется, я не могу найти ничего, что говорило бы об этом.


person rientelfon    schedule 24.06.2019    source источник
comment
UWP поддерживает соединение SQL-сервера с EF Core. Следуйте этой ветке, чтобы изменить строку подключения для использования TCP / IP и посмотреть, будет ли она работать.   -  person Xie Steven    schedule 25.06.2019
comment
Я попробовал ваше предложение, но все еще получаю указанную ошибку. Я проверил и подключился к SQL Server с помощью соединения TCP / IP и учетных данных. Я определенно в растерянности, я даже активировал интегрированную безопасность, как предложил другой пользователь.   -  person rientelfon    schedule 25.06.2019


Ответы (1)


Спасибо за предложение, Ксавье Се, но похоже, что проблема заключалась в том, что на самом деле у меня не были включены следующие возможности, как показано на рисунке ниже.

DatabaseIssue

person rientelfon    schedule 25.06.2019