.net-core - 使用计算列映射到表和视图的实体
问题描述
使用 EF Core 5,我们现在能够将实体映射到表和视图。如果视图包含表中的所有列,还包含其他计算列,我们可以配置实体和映射以正常工作吗?例如,如果我更新实体,EF 会更新表,但我需要在表更新后重新评估视图中的计算列。就目前而言,EF 尝试重新评估表中的计算字段,但由于这些列不存在而失败。如果 EF 应该为每次读取从视图中提取,为什么在这种情况下它从表中读取?
此外,是否可以将视图中的这些附加列直接添加到 C# 实体,并使 EF 迁移对视图列表现适当?就目前而言,如果我保留视图列映射,EF 迁移将尝试在表而不是视图上创建这些列。
实体:
public class Blog {
public int Id {get;set;}
public string Name {get;set;}
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string Status {get; private set;}
}
SQL 表:
Table Blogs {
Id,
Name
}
SQL 视图:
View BlogsView {
SELECT * FROM Blogs,
<INSERT COMPLEX QUERY HERE> AS Status
}
EF 核心地图:
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<Blog>().ToTable("Blogs").ToView("BlogsView");
}
EF Core 版本:5 数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer 目标框架:.NET Core 3.1 操作系统:Windows 10 IDE:Visual Studio 2019 16.3
解决方案
推荐阅读
- javascript - 函数 sortAlpha 未定义
- lua - LUA - 应该工作的简单代码不起作用(Roblox)
- php - 许多关系数据的左连接表
- r - 访问在函数中创建的 R 对象
- javascript - 如何在第二个参数中获取 serverinfo?
- php - Google Hangout Chat - 向用户发送直接消息
- python - 使用 PySpark 删除 spark 数据框中嵌套结构中的列(文本中的详细信息)
- css - 带填充的下划线:非链接
- javascript - Javascript - 将字符串数组映射到具有多个对象属性的对象数组
- c++ - 自定义聚合初始化列表构造函数