我需要在我的ASP.NET MVC 5项目中使用视图模型,但是当我在模型文件夹中添加一个时,一个新实体被添加到数据库中,我被迫添加迁移并更新我的数据库。我不希望这种情况发生,因为它是我正在添加的视图模型,而不是我需要持久化回数据库的模型。我想构建一些控制器和视图,所以我在类中添加了一个主键。我没有将新创建的视图模型添加到我的DbContext
类。
视图模型:
public class RolesViewModel
{
public int RolesViewModelId { get; set; }
public string Role { get; set; }
}
有没有办法创建一个不会自动添加到DbContext
类的视图模型,从而导致数据模型发生变化?
非常感谢,
杰森。
答案 0 :(得分:7)
无论您将其称为视图模型,实体等,它只是语义。一切都只是一个类,它所使用的上下文决定了你所指的是什么。对于实体,在DbContext
中明确或隐式添加引用,这是您最终添加到数据库中的内容的唯一方法。我强调了“或隐式*部分,因为如果在您的DbContext
中引用了 的任何类,或者连接到那里引用的任何类的任何类,也引用了您的”视图模型“,它最终将在您的数据库中。实体框架将自动遵循您的类层次结构并为所有关系创建表,即使您没有直接在DbContext
中引用这些层次结构中的特定类。
答案 1 :(得分:0)
在您的情况下,脚手架将在您的appContext类中添加以下代码
public DbSet<RolesViewModel> RolesViewModel { get; set; }
如果愿意,您仍然可以使用脚手架,但是请记住删除该条目,并且代码不会首先创建任何表。它将使您的数据库保持干净。