Я следовал этому уроку https://www.freecodecamp.org/news/an-awesome-guide-on-how-to-build-restful-apis-with-asp-net-core-87b818123e28/, и я все понял правильно и работает, но в этом примере API используется опция InMemoryDatabase
.Я хочу использовать базу данных SQL Server вместе с ней (я использую код в первую очередь).
Я попытался создать базу данных без таблиц в SQL Server Management Studio и использовать строку подключения со следующим кодом в моем классе Startup
, и он работает и сохраняет данные в базе данных, но это делаетне отображается в SQL Server Management Studio.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext<GameCollectionDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DBGAMESCOLLECTION"));
// options.UseInMemoryDatabase("GAME_COLLECTION_DB");
});
services.AddScoped<IUsersRepository, UsersRepository>();
services.AddScoped<ICollectionsRepository, CollectionsRepository>();
services.AddScoped<IGamesRepository, GamesRepository>();
services.AddScoped<IUsersService, UsersService>();
services.AddScoped<ICollectionsService, CollectionsService>();
services.AddScoped<IGamesService, GamesService>();
services.AddScoped<IUnitOfWork, UnitOfWork>();
services.AddAutoMapper();
}
Мой appsettings.json
выглядит следующим образом
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"DBGAMESCOLLECTION": "Server=(localdb)\\mssqllocaldb;Database=GAMES_COLLECTION_DB;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"AllowedHosts": "*"
}
Все, что я хочу, - это заставить Entity Framework создавать базу данных на моем локальном компьютере на основемодели, которые я объявил, и полученная база данных будут доступны в SQL Server для выполнения запросов и хранимых процедур.
(ОБНОВЛЕНИЕ)
Полагаю, я должен быть более понятным.Я создал свой REST API с подходом, основанным на коде, потому что я ожидал создать модели и на основе этого получить файл базы данных или скрипт.Впервые я реализовал EF сам, поэтому сначала я использовал опцию InMemoryDatabase для своего контекста, но я знал, что это только для целей тестирования.После того, как API заработал, как и ожидалось, я перешел к использованию реальной базы данных для обеспечения устойчивости.Поэтому я добавил это в свой файл Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext<GameCollectionDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DBGAMESCOLLECTION"));
//options.UseInMemoryDatabase("GAME_COLLECTION_DB");
});
}
И мой appsettings.json закончился следующим образом.
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"DBGAMESCOLLECTION": "Server=(localdb)\\mssqllocaldb;Database=GAMES_COLLECTION_DB;Trusted_Connection=True;"
},
"AllowedHosts": "*"
}
До этого момента база данных работала и данные сохранялись после остановкиконтекст, но мне было интересно, где была создана моя база данных, потому что в SSMS она не отображалась на моей машине.Наконец, я обнаружил, что из-за строки соединений я использовал другой экземпляр sqlexpress, и когда я подключился к механизму '(LocalDb) \ MSSQLLocalDB' в имени сервера SSMS, он был там.
Итак, теперь у меня есть база данных sql server и строка подключения к ней, чтобы я мог работать в то же время.Мой вопрос: как эта конфигурация будет работать в реальной жизни?строка подключения, которую я написал в appsettings.json - это место, где будет создаваться база данных?так если я поставлю ip сервера он там будет?