是否可以在Entity Framework Core 2.1版上自动映射数据库视图?

问题描述 投票:1回答:1

我找到了this interesting question on stackoverflow关于映射视图并在EF Core中使用它的方法。 根据its answer,以前的EF Core版本无法自动映射视图。

但现在呢?根据Entity Framework 2.1 Roadmap

EF Core模型现在可以包含查询类型。与实体类型不同, 查询类型没有在其上定义的键,也无法插入, 删除或更新(即它们是只读的),但可以返回它们 直接通过查询。查询类型的一些使用方案是:

  • 映射到没有主键的视图
  • (...)

所以问题是:是否可以自动构建数据库上下文并映射其视图(就像我们对现有数据库的a normal scaffold-dbcontext所做的那样)?如果有,有谁知道怎么做?

或者唯一的方法仍然是creating them manually,因为Sampath Kaliyamurthy在之前的EF Core版本的答案中说过?

c# asp.net-core entity-framework-core asp.net-core-2.1
1个回答
2
投票

WORKAROUND SOLUTION:

我找到了一个解决方法,其中包括:

  1. 重命名视图(例如从“MyView”重命名为“My_View”)
  2. 使用select * into table from view查询从该视图创建一个表,并将其命名为视图初始名称(例如,该表将命名为“MyView”)
  3. 在表中设置主键
  4. Scaffold the DB,所以你得到所有的类和正确的映射
  5. 从映射描述符中删除HasKey属性
  6. 从数据库中删除该表并使用其初始名称重命名该视图(因此,再次从“My_View”更改为“MyView”)

这将使视图像普通的脚手架表一样,您将获得所有正确的映射和一切。 唯一的区别当然是您无法在其中插入数据或进行编辑。 但是没关系,因为如果你想使用视图,你从一开始就知道这一点!


CONSIDER THIS QUESTION STILL OPENED...

...since despite of this workaround, I still wonder if there's something more "immediate" and "2.1-native", introduced with ef 2.1 as they said in the roadmap.

所以任何帮助和/或答案都会像欣赏一样!

© www.soinside.com 2019 - 2024. All rights reserved.