Ядро ASP.NET с шаблоном Angular 7 подключается к базе данных SQL Server Express для чтения таблицы - PullRequest
0 голосов
/ 03 февраля 2019

Я создал приложение в сообществе Visual Studio ASP.NET Core с шаблоном Angular.Я обновил Angular моего проекта до v7.

Я пытался следовать этому примеру эта ссылка c-sharpcorner

Проблема возникает, когда я пытаюсь подключиться к серверу, используя https://localhost:44367/api/Employee/Index, выдается исключение из-за невозможности подключения к серверу.

SqlException: ошибка сети или экземпляра, связанная с установкой соединения с SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)

Итак, я создал таблицу и процедуры в SQL Server, проверил их существование.Сервер запущен и настроен как по этой ссылке msdn .

Я включил TCP / IP и добавил новое правило в брандмауэр, чтобы разрешить все запросы портов TCP из локального домена.

Мой Employee.cs был изменен с именем фактического проекта.

Мой EmployeeDataAccessLayer.cs был изменен с именем фактического проекта и именем строки подключения, протестированной с ADO.NetМодель данных объекта.

Я также добавил строку подключения к web.config.

Я добавил контроллер, в котором я изменил только имя проекта.

ВСлужба, с которой я внедряю код в мое приложение Angular, empservice.service.ts, я столкнулся с некоторыми трудностями, потому что я не знаю, как изменить указанные ниже функции для использования HttpClient (map (rxjs) на наблюдаемом Http не работает).Поэтому я прокомментировал код сразу после завершения работы конструктора.

Служба зарегистрирована в приложении как провайдер.

import { Injectable, Inject } from '@angular/core';
import { Http, Response} from '@angular/http';
import { HttpClient } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { Router } from '@angular/router';
import { map } from 'rxjs/operators';


@Injectable()
export class EmployeeService {
myAppUrl: string = "";
constructor(private httpClient: HttpClient, @Inject('BASE_URL') baseUrl: string) {
this.myAppUrl = baseUrl;
}
//getEmployees() {
//  return this.httpClient.get(this.myAppUrl + 'api/Employee/Index')
//        .map((response: Response) => response.json()
//        .catch(this.errorHandler));
//}

//getEmployeeById(id: number) {
//    return this._http.get(this.myAppUrl + "api/Employee/Details/" + id)
//        .map((response: Response) => response.json())
//        .catch(this.errorHandler)
//}

Вопрос 1 Неправильно ожидать, что https://localhost:44367/api/Employee/Indexдать содержимое из таблицы?(реализации контроллера недостаточно?) Вопрос 2 Можете ли вы помочь мне адаптировать код из службы выше для получения данных внутри приложения Angular?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

После многочисленных попыток и неудач, возвращаясь к большинству базовых вещей, которые я не изучал, потому что я делал что-то еще в школе, я заметил в посте, что для доступа к базе данных, , вы должны сначала подключиться кэто через вашу программу Visual Studio, используя проводник сервера . Поскольку строка подключения, которую я пытался использовать, не была открыта в Visual Studio, я не смог подключиться к базе данных.

Что касается второго вопроса, ответ примерно такой же:this:

export class EmployeeService {
employees: Observable<Employees[]>;
newemployee: Employees;
constructor(private http: HttpClient) {
}
getEmployees() {
return this.http.get<Employee[]>(baseUrl + 'Employees');
}
etc...
}

Я мог бы отредактировать этот пост после того, как освоил этот процесс.На данный момент это мое основное понимание.

0 голосов
/ 05 февраля 2019

На основании ошибки:

SqlException: ... Сервер не найден или недоступен.Убедитесь, что имя экземпляра правильное ...

и connectionString:

string connectionString = "data source = DESKTOP - RBLIODU\\SQLEXPRESS;initial catalog = Employees; integrated security = True;MultipleActiveResultSets=True;App=EntityFramework";

Я бы предложил вам изменить имя сервера на (localhost) или DESKTOP-RBLIODU (без пробелов).

Вот так:

string connectionString = "data source=(localhost)\\SQLEXPRESS;initial catalog = Employees; integrated security = True;MultipleActiveResultSets=True;App=EntityFramework";

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...