首页 > 解决方案 > Microsoft.Data AsNoTracking() 用于跟踪 SQL 视图更新

问题描述

我正在寻找某种方法来更改 SQL Server 视图以列出字段名称、原始值和新值。我正在使用 EF Core 3.1.0。

我试图使用以下软件包来做到这一点:

using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;

类似的东西.Where().AsNoTracking(),但它似乎只能用于System.Data.SqlData代替。

大体流程是(此时如下):

  1. 获取原始视图
  2. 更新对象视图使用
  3. SaveChangesAsync()
  4. 获取更新的视图(这会自动设置为原始视图,这是出乎意料的)。

一些剪断/概念:

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()-originalViewupdatedView对象相等(或更新或尚未更新)

标签: c#entity-framework-core

解决方案


推荐阅读