c# - Microsoft.Data AsNoTracking() 用于跟踪 SQL 视图更新
问题描述
我正在寻找某种方法来更改 SQL Server 视图以列出字段名称、原始值和新值。我正在使用 EF Core 3.1.0。
我试图使用以下软件包来做到这一点:
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
类似的东西.Where().AsNoTracking()
,但它似乎只能用于System.Data.SqlData
代替。
大体流程是(此时如下):
- 获取原始视图
- 更新对象视图使用
- SaveChangesAsync()
- 获取更新的视图(这会自动设置为原始视图,这是出乎意料的)。
一些剪断/概念:
var originalView = dbContext.MyView.FirstOrDefault(item => item.Id == id);
var updatedObject = dbContext.SomeTable.FirstOrDefault(item => item.Id == id);
if (updatedObject = null) {
throw;
}
updatedObject.SomeProperty = "New val";
await dbContext.SaveChangesAsync();
var updatedView = dbContext.MyView.FirstOrDefault(item => item.Id == id);
dbContext.Entry(updatedView).Reload();
MyView 包含来自 SomeTable 的 ia 字段。访问updatedView
时,通过 FirstOrDefault() 或dbContext.Entry().Reload()
-originalView
和updatedView
对象相等(或更新或尚未更新)
解决方案
推荐阅读
- amazon-web-services - 限制 cognito 用户组的用户访问 API 网关端点
- java - 警告 org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker 127.0.0.1:9092 (id: -1 rack: null) 已断开连接
- java - 如何将与布尔变量匹配的 int 变量和字符串变量放入 .equals() 中?
- scala - 当类型类中有类型类时,使用类型类语法的正确方法是什么?
- java - 如何为具有时间戳值的实体类创建 Gson 对象?
- jenkins - 如何在 Jenkins 管道中使用动态数据构建并行和顺序阶段的组合
- java - 有效地将长格式 (yyyyMMddHHmmss) 的 DateTime 转换为另一个区域以进行比较
- zsh - iTerm2 在终端上显示一些数字
- html - 为什么带有供应商前缀的 flexbox、justify-content 在 Safari 中不起作用?
- reactjs - 优化应用程序的路由和 React 延迟加载,登陆页面上有 2 个部分