Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
1

Публикация приложения Net Core - создание таблиц базы данных

21.12.2019, 08:55. Просмотров 1726. Ответов 15
Метки нет (Все метки)

Здравствуйте!

Извините за вопросы - только начинаю изучать базы данных.

Помогите с созданием таблиц базы данных при публикации на удалённом сервере, пожалуйста!

Вот я по учебнику создал небольшое тестовое веб-приложение ASP .NET Core с использованием базы данных.
(Учебник Razor Pages)

Пробую перенести и опубликовать приложение на VDS сервере.

- Windows Server 2019
- установил IIS
- установил MS SQL Express
- создал новую базу SQL
- публикацю сделал через папку (выгрузил на домашнем компе и потом скопировал на сервер)
- при публикации - указал путь к новой базе на SQL-сервере

В результате:
Приложение опубликовалось, сайт работает - но всё, что касается базы данных - не работает.
Таблицы в базе данных - не созданы.

Вопрос: Как при публикции - автоматически создать таблицы базы данных?
Причём там у меня ещё Identity - у неё тоже свои таблицы должны создаться как-то?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2019, 08:55
Ответы с готовыми решениями:

Фоновые процессы в ASP .NET Core и базы данных
Доброго времени суток всем. В общем, нужно сделать в учебных целях веб-приложение - я придумал...

Создание минимального запускаемого приложения ASP.NET Core 2 без шаблона в VS Code
Добрый день! Расскажите, пожалуйста, с подробными комментариями, что необходимо добавить и...

Передача данных серверу на Asp.Net Core с приложения на .NetFramework
У меня есть сервер написанный на сокетах. Он принимает данные от клиента (пакет байт) и транслирует...

Создание базы данных на лету, создание и заполнение таблиц в базе DB (Paradox? или..).
Здравствуйте Профи! --- Видел я "простенькую" (exe-шник небольшого размера, запускается сразу,...

15
162 / 137 / 35
Регистрация: 25.11.2015
Сообщений: 910
21.12.2019, 09:43 2
Миграцию провести надо
0
9 / 9 / 0
Регистрация: 11.05.2018
Сообщений: 107
21.12.2019, 09:54 3
скиньте код хотя бы код
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
21.12.2019, 10:28  [ТС] 4
А расскажите - как это можно сделать?
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 1
21.12.2019, 16:48 5
Add-migration, затем update-database.
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
21.12.2019, 17:01  [ТС] 6
Да я вот не понимаю - он требует указать проект, а где этот проект и как он называется?

Пишу команду: dotnet ef migrations add InitialCreate
А он мне в ответ: No project was found. Change the current working directory or use the --project option.

Где взять этот проект?
В папке, куда файлы публикации выгрузились - нет ничего похожего на слово project
Хелп!
0
Миниатюры
Публикация приложения Net Core - создание таблиц базы данных  
3944 / 2834 / 1232
Регистрация: 09.05.2015
Сообщений: 6,936
21.12.2019, 17:08 7
Нужно находится в папке с проектом в это время.
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
21.12.2019, 17:17  [ТС] 8
А где на сервере папка с проектом? Я же туда только файлы для публикации скачал? Это и есть папка проекта?
Из этой папки пробую - такая же картина: пишет, что нет проекта и требует указания проекта
0
Миниатюры
Публикация приложения Net Core - создание таблиц базы данных  
1927 / 1522 / 458
Регистрация: 02.08.2011
Сообщений: 4,390
21.12.2019, 17:55 9
Zixi, Zixi, миграции лучше всего делать программно, при запуске приложения.
Если руками, то dotnet ef migrations -p ProjectName -s StartupProjectName add InitialCreate
-p - указывается проект в котором находится папка с миграциями.
-s - указывается стартовый проект, в котором хранится строка подключения. Собственно, ваше веб-приложение .
1
162 / 137 / 35
Регистрация: 25.11.2015
Сообщений: 910
21.12.2019, 20:17 10
1. Можно с консоли, можно из консоли в студии. Мне в студии удобнее. Судя по всему у человека уже есть база на локале и он хочет на сервере. Скорее всего update-database достаточно. Хотя вот тут я бы уточнил - может у человека EFCore не установлен?
2. В core не надо инициировать миграции
3. Не понимаю как чувак вообще работает с базой данных, если задает такие вопросы.
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
21.12.2019, 20:42  [ТС] 11
@IamRain - спасибо большое!
Твой совет - очень помог. Благодаря ему - разобрался с вопросом.

Стало понятно, что я не разместил решение (вместе с проектом) на сервере.
Я только файлы для публикации копировал на сервер и всё.

Скопировал решение с проектом на сервер (они у меня в одной папке).
Много и долго экспериментировал с командной строкой - и в результате... ура!... получилось.
Сделал миграцию и обновил базу. Всё вроде стало ок.

P.S. Не ругайте сильно, пожалуйста! Я первый раз сегодня работал с подобной базой данных. И только начал недавно изучать по учебнику Microsoft веб-приложения.

Теперь другая возникла проблема:
1) Если запустить приложение через файл .exe (который в папке публикации) - то показываются локальные пути типа localhost:5001 - и если на сервере открыть браузер и начать работать с веб-приложением - то всё отлично работает.
2) А из интернета (с домашнего компа) - не работает, пишет ошибку (я так понимаю при обращении к базе данных):
"An error occurred while processing your request." (см. картинку)
И никак не пойму - что можно сделать, чтобы исправить? (если что - у меня на сервере Visual Studio не установлена)
0
1927 / 1522 / 458
Регистрация: 02.08.2011
Сообщений: 4,390
21.12.2019, 21:14 12
Цитата Сообщение от Zixi Посмотреть сообщение
Стало понятно, что я не разместил решение (вместе с проектом) на сервере.
Именно поэтому по-хорошему нужно применять миграции программно (из кода), а вручную миграции применяют во время активной разработки.

Добавлено через 2 минуты
А так да, вы делали правильно, что копировали на сервер только файлы для публикации.
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
22.12.2019, 16:32  [ТС] 13
IamRain !

Объясни, пожалуйста, я так и не понял - последовательность моих действий?

Вот я скопировал на север папку с файлами для публикации - что я дальше должен сделать?
Ведь проектам там - нет? Файлов/папки с миграциями - тоже нет...
Что делать дальше?
0
162 / 137 / 35
Регистрация: 25.11.2015
Сообщений: 910
22.12.2019, 18:02 14
Берешь строку подключения к базе данных на сервере и проводишь update-database у себя в проекте. Все.
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
22.12.2019, 18:15  [ТС] 15
У меня же проект на домашнем компе. Там же другая локальная база, встроенная в Visual Studio которая.
А на удалённом сервере - я вообще с базами работать не умею. Её же как-то "расшаривать" для доступа извне надо?
А это я как понимаю не рекомендуется в целях безопасности? Да я и не знаю пока как это сделать.

Добавлено через 4 минуты
Я вот так пока сделал:

1) В Visual Studio в консоли PMC (Консоль диспетчера пакетов) запустили команду:
script-migration
2) Visual Studio создала и открыла файл скрипта sql
3) Скопировали этот скрипт себе куда-нибудь
4) На сервере - открыли SQL Server Management Studio
5) Правой кнопкой на нужной базе -> New Query (Новый запрос) - откроется окно для создания SQL-запроса - вставить туда ранее сфомированный в Visual Studio запрос и нажать кнопку Execute (F5 - выполнить запрос)
6) Средствами SQL Server по заданному скрипту - будут созданы необходимые таблицы базы данных

Проверил снова на запуске exe-файла - по адресу localhost:5001 - веб-приложение отлично работает.

Осталось понять - почему по названию сайта через IIS не работает...
Что и где можно посмотреть?
0
8 / 7 / 1
Регистрация: 20.02.2018
Сообщений: 85
22.12.2019, 20:17  [ТС] 16
Проблема решилась так - надо дать права IIS на работу с базой данных :
1) Надо создать новое подключение к базам SQL Server (Security -> New -> Login)
2) Пользователя надо обязательно назвать по правилу: IIS APPPOOL\ + название вашего пула, в котором находятся приложения Net Core. Например так: IIS APPPOOL\NetCoreApps
И указать в настройках User Mapping три роли для нужной базы данных:
db_datareader
db_datawriter
public

Я так сделал - и веб-приложение заработало из интернета. Ура!

Подводим итоги темы:
1) Миграцию базы данных - делаем через скрипт SQL, созданный в Visual Studio
2) Создаём правильное подключение IIS к SQL Server

Вопрос, закрыт. Всем спасибо!
0
Миниатюры
Публикация приложения Net Core - создание таблиц базы данных   Публикация приложения Net Core - создание таблиц базы данных  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2019, 20:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создание базы данных и таблиц
Как создать базу данных с таблицами в MS SQL Server 2008 на основе скриптов из PowerDesigner'a. То...

Создание таблиц базы данных
прошу вашей помощи уважаемые гуру вопрос в следуещем есть форма на которой расположены два...

Публикация ASP.NET приложения
Здравствуйте. Я создал ASP.NET (не MVC) приложение. Хочу выложить её на somee.com Подготовил к...

Создание базы данных, таблиц, типы данных и триггеры
Здравствуйте. В колледже выдали задание по базам данных. Как создавать базы, таблицы и типы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.