У меня немного неприятная проблема, когда я запускаю решение asp.net с localdb.Я всегда получаю это исключение.
Мой вопрос, как я могу это исправить?Я просто хочу, чтобы он генерировал небольшую локальную базу данных, в которой я мог бы выполнять операции CRUD с помощью REST API
System.Data.SqlClient.SqlException: «При установлении ошибки произошла ошибка сети или конкретного экземпляра.подключение к SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка локальной базы данных во время выполнения. Не удалось создать автоматический экземпляр. Подробные сведения об ошибке см. в журнале событий приложений Windows.
DbInitiliazer.cs
using NMBSAPICore.Models;
using System;
using System.Linq;
namespace NMBSAPICore.Data
{
public class DbInitializer
{
public static void Initialize(NMBSAPICoreContext context)
{
if (context.Station.Any())
{
return; // DB has been seeded
}
var stations = new Station[] {
new Station { Naam = "Olen", Sporen = 2 }
};
foreach (Station s in stations)
{
context.Station.Add(s);
}
context.SaveChanges();
}
}
}
Startup.cs configure
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<NMBSAPICoreContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("NMBSAPICoreContext")));
services.AddMvc();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = " NMBS API", Version = "v1" });
});
}public void Configure(IApplicationBuilder app, IHostingEnvironment env , NMBSAPICoreContext NMBSAPIContext)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMvc();
DbInitializer.Initialize(NMBSAPIContext);
}
}
Файл контекста
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Protocols;
namespace NMBSAPICore.Models
{
public class NMBSAPICoreContext : DbContext
{
public NMBSAPICoreContext(DbContextOptions<NMBSAPICoreContext>options):
base(options)
{
}
public DbSet<Station> Station { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Station>().ToTable("Stations");
}
}
}
Строка соединения:
"ConnectionStrings": {
"NMBSAPICoreContext": "Server=(localdb)\\mssqllocaldb;Database=NMBSDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
sqllocaldb info
.\IIS_DB
aspnetIceOnWheels
aspnet-IceOnWheels-1
localdb
mssqllocald
MSSQLLocalDB
NMBSAPICore
ProjectsV13
v11.0
Я не хотел публиковать слишком много кода, потому что он не имеет отношения к моей проблеме, потому что это также происходит со свежим новым проектом, а также с make и попыткой запустить с localDb.
Как видите, я используюSwagger API, поэтому я не могу легко протестировать свои вызовы API. У меня есть несколько компьютеров, и ни на одном из них не была создана локальная база данных. Значит ли это, что я установил SQL Server Express на всех устройствах неправильно? Microsoft заявляет, что я должен генерировать по умолчаниюфайл mdf в /users/name/
, мой ничего не делает.
Я установил SMSS и SQL Server Express 2017.