Добавление класса ViewModel добавляет модель codefirst в базу данных

asp.net-mvc asp.net-mvc-5 c# entity-framework entity-framework-6

Вопрос

Мне нужна модель представления в моем проекте ASP.NET MVC 5, но когда я добавила ее в папку моделей, в базу данных была добавлена ​​новая сущность, и мне пришлось добавить миграцию и обновить мою базу данных. Я не хочу, чтобы это произошло, поскольку это модель представления, которую я добавляю, а не модель, которую мне нужно сохранить в базе данных. Я хочу поднять некоторые из контроллеров и представлений, поэтому я добавил первичный ключ к классу. Я не добавлял вновь созданную модель представления в свой класс DbContext .

ViewModel:

    public class RolesViewModel 
    { 
        public int RolesViewModelId { get; set; }
        public string Role { get; set; } 
    }

Есть ли способ создать модель представления, которая автоматически не добавляется в класс DbContext и, следовательно, приводит к изменению модели данных?

Большое спасибо,

Джейсон.

Принятый ответ

В вашем случае Scaffolding добавит следующий код ниже в ваш класс appContext

public DbSet<RolesViewModel> RolesViewModel { get; set; }

Вы все равно можете использовать строительные леса, если хотите, однако не забудьте удалить эту запись, и сначала не будет создана таблица. Он будет содержать вашу базу данных в чистоте.


Популярные ответы

Будь вы называете это моделью представления, сущностью и т. Д., Это просто семантика. Все просто класс, и контекст, который он использует, определяет, на что вы ссылаетесь. В случае сущностей это добавление ссылки либо явно, либо неявно в ваш DbContext , и это единственный способ, которым вы получите что-то, добавленное в вашу базу данных. Я подчеркнул «или неявно * часть , потому что , если какой - либо класс , на который ссылается в вашем DbContext или любого классе , подключенный к любому классу ссылочного там, также ссылается на свою„модель представления“, то это будет в конечном итоге в вашей базе данных. Entity Framework автоматически следуйте иерархиям классов и создавайте таблицы для всех отношений, даже если вы не ссылаетесь на определенный класс в этих иерархиях непосредственно в вашем DbContext .



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему