我有一个带有Entity Framework Core(数据库优先)的MVC Core(2.2)应用程序。我使用Scaffold-DbContext语句从数据库生成我的模型类。现在,除了表之外,我还需要从sql视图获取数据。我是通过手动将以下内容添加到数据库上下文类的OnModelCreating()来实现的:
modelBuilder.Query<SomeModel>().ToView("vwSomeView");
当我需要在数据库架构中进行更改(更新)时,我运行Scaffold-DbContext,上面的代码将被覆盖并消失。有什么解决办法吗?
答案 0 :(得分:1)
您可以创建DbContext类的局部类。在该局部类中,您可以定义自己的OnModelCreating()
。
protected void OnModelCreating(ModelBuilder... )
{
modelBuilder.Query<SomeModel>().ToView("vwSomeView");
OnModelCreatingBase(modelBuilder);
}
在脚手架类中,您需要将OnModelCreating
重命名为OnModelCreatingBase
。
每次您对实体进行脚手架时,仍然需要进行手动工作,但是运行生成器后会出现编译时错误,因为OnModelCreating被声明了两次。这比您否则会遇到的运行时错误更可取。