Веб-API Добавить контроллер с операциями CRUD для существующей таблицы Azure в существующей базе данных Azure - PullRequest
0 голосов
/ 14 октября 2019

Мое приложение выполняет аутентификацию с Asp.NET Identity. Входящие в систему пользователи хранятся в dbo.ASPNetUsers

. Некоторое время назад я использовал миграции для добавления другой таблицы под названием «Клиент», но теперь эта таблица заполнена.

Как добавитьконтроллер для выполнения операций CRUD ТОЛЬКО на существующем «Клиенте» (в других таблицах есть контроллеры) без удаления таблицы и риска удаления любого ее содержимого или любого другого содержимого в существующих таблицах в БД.

Что я пробовална данный момент:

Создайте класс в папке Models под названием «Customer», чтобы он походил на столбцы таблицы

       public class Customer
       {
            [Key]
            public string ID {get;set;}

            public string FirstName {get;set;}

            public string LastName  {get;set;}
       }

Добавьте DbSetCustomers

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
           // : base("DefaultConnection", throwIfV1Schema: false)
              : base("MS_TableConnectionString", throwIfV1Schema: false)
        {
        }

        public DbSet<Customer> Customers { get; set; }


        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}

Добавьте новый контроллер типа Контроллер Web API 2 с действиями с использованием Entity Framework с использованием класса модели Customer, с классом контекста данных в качестве стандартного ApplicationDBContext (опция по умолчанию при создании контроллера, предполагается, что он использует строку подключения моего приложения для таблицы azure).

При использовании клиентов GET в POST я получаю сообщение о том, что база данных изменилась с момента последнейgration, я представляю, что это происходит из-за добавления клиентов DbSet, но я не хочу обновлять миграцию, потому что в коде миграции есть команда удаления таблицы.

  1. Это правильный метод?
  2. Стоит ли просто изменить скрипт миграции, чтобы не отбрасывать таблицу?

Пожалуйста, сообщите.

1 Ответ

1 голос
/ 14 октября 2019

«База данных изменилась с момента последней миграции» , это способ EF сказать, что ваша история миграции не совпадает с таблицами.

Рабочий процесс генерации базы данных EF по умолчанию создает полныйскрипт, который будет воссоздавать вашу базу данных каждый раз, когда вы выбираете «Создать базу данных из модели», поэтому, если вы выполните ее в своей БД, вы потеряете все свои данные. Однако, если вы просто создаете новую сущность и не изменяете существующие, вы все равно можете сгенерировать базу данных из вашей модели, но затем взять этот скрипт и запустить только ту часть, которая создает новую таблицу для вашей новой сущности.

Вы можете взглянуть на ссылку ниже для дальнейшего использования:

https://www.apress.com/gp/blog/all-blog-posts/secular-trends-for-the-cloud/12097630

https://social.msdn.microsoft.com/Forums/en-US/ed3ccb7e-5e89-4fd4-ae92-d641a5c5bd9a/entity-framework-model-first-make-changes-to-the-database-without-dropping-tables?forum=adodotnetentityframework

https://www.pauric.blog/Database-Updates-and-Migrations-with-Entity-Framework/

Надеюсь этопомогает.

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