Получение SQL Ошибка сервера при добавлении данных в базу данных с использованием ASP. NET Web API - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь добавить некоторые данные в веб-API ASP. NET из того же решения, но каким-то образом я получаю эту ошибку с сервера SQL.

Это мой контекст

public class SampleCtxt: DbContext
{
    public DbSet<TodoItem> TodoItems { get; set; }

    public SampleCtxt(DbContextOptions<SampleCtxt> options)
        : base(options)
    {
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=APITESTDB; Initial Catalog=APITestDb; Trusted_Connection=True;");
    }
}

Настройка метода служб из API

public void ConfigureServices(IServiceCollection services)
{
        services.AddDbContext<SampleCtxt>(opt =>
            Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False; Database = APITESTDB;"));
            opt.UseSqlServer(
                Configuration
                .GetConnectionString("DefaultConnection")));
        services.AddControllers();
}

Строка подключения из json

"ConnectionStrings": {
    "DefaultConnection": "Server=.\\SQLEXPRESS;Database=APITESTDB; Initial Catalog=APITestDb Trusted_Connection=True;"
},

Добавление данных из другого консольного проекта

static void Main(string[] args)
{
    using (SampleCtxt ctxt = new SampleCtxt(
        new Microsoft.EntityFrameworkCore.DbContextOptionsBuilder<SampleCtxt>().Options))
        {
            TodoItem todoItem = new TodoItem() { Name = "qualquer" };
            ctxt.TodoItems.Add(todoItem);
            ctxt.SaveChanges(); 
        }
}

Все выглядит нормально, но я получаю эту ошибку:

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

1 Ответ

1 голос
/ 23 марта 2020

Видно, что ConnectionString была неправильной и создание экземпляра контекста класса, я решил проблему, добавив конструктор без параметров и исправив метод OnConfiguring

public class SampleCtxt: DbContext
{
    public DbSet<TodoItem> TodoItems { get; set; }

    public SampleCtxt()
    {

    }

    public SampleCtxt(DbContextOptions<SampleCtxt> options)
        : base(options)
    {

    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=APITESTDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;");
    }
}
...