EF Core 2.1 中数据库视图的脚手架-DbContext(查询类型)
Scaffold-DbContext for database views in EF Core 2.1 (Query Types)
EF Core 2.1 具有新功能 - 查询类型。
Some of the main usage scenarios for query types are:
- Serving as the return type for ad hoc FromSql() queries.
- Mapping to database views.
- Mapping to tables that do not have a primary key defined.
- Mapping to queries defined in the model.
我将项目升级到Core 2.1,但是Scaffold-DbContext 仍然没有生成数据库视图。必须使用特殊参数还是Scaffold-DbContext不支持?
2.1 不支持。请参阅问题 #1679。
这里有一个笨拙但有效的解决方案:
如何将具有数据库视图的控制器搭建到 EF Core 2.1
- 在数据库中创建视图。
- 创建一个与视图具有相同结构的 POCO。
- 使用步骤#2 中创建的 POCO 添加新控制器
一种。如果发生键相关错误,请在列上添加一个
Key
属性,然后在脚手架完成后删除。
- 应该添加一个新的 属性 和
DbSet<T>
,其中 T
是在第 2 步中创建的 class。将 DbSet
更改为 DbQuery
.
在DbContext
的OnModelCreating
方法中,添加如下代码:
modelBuilder.Query<POCO from step#2>().ToView("Name of the view");
EF Core 2.1 具有新功能 - 查询类型。
Some of the main usage scenarios for query types are:
- Serving as the return type for ad hoc FromSql() queries.
- Mapping to database views.
- Mapping to tables that do not have a primary key defined.
- Mapping to queries defined in the model.
我将项目升级到Core 2.1,但是Scaffold-DbContext 仍然没有生成数据库视图。必须使用特殊参数还是Scaffold-DbContext不支持?
2.1 不支持。请参阅问题 #1679。
这里有一个笨拙但有效的解决方案:
如何将具有数据库视图的控制器搭建到 EF Core 2.1
- 在数据库中创建视图。
- 创建一个与视图具有相同结构的 POCO。
- 使用步骤#2 中创建的 POCO 添加新控制器
一种。如果发生键相关错误,请在列上添加一个
Key
属性,然后在脚手架完成后删除。 - 应该添加一个新的 属性 和
DbSet<T>
,其中T
是在第 2 步中创建的 class。将DbSet
更改为DbQuery
. 在
DbContext
的OnModelCreating
方法中,添加如下代码:modelBuilder.Query<POCO from step#2>().ToView("Name of the view");