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