【发布时间】:2021-03-18 11:34:57
【问题描述】:
我有一个包含数千种产品的产品表。我只想更新此表的两列(价格,isAvailable)。那么有没有办法从这个表中只选择这两列?
这是我正在使用的代码。但我不想选择所有列。
var dbModels = await DbContext.Products
.Where(x => x.SellerId == sellerId)
.ToListAsync();
我试过了
var db = await DbContext.ProductSkuDetail
.Where(x => x.SellerId == sellerId)
.Select(y => new
{
Price = y.Price,
IsAvailable = y.IsAvailable
}).ToListAsync();
但这是只读的。我想更新这些列。
【问题讨论】:
-
通过使用
y => new {,您正在创建一个匿名类(一个包装器)。如果您只删除Select并只更新您需要的列会怎样。 -
谢谢杰罗恩。如果我删除 Select 那么所有的列都会被选中吗?
-
您是在问如何查询实体并且只返回 2 列吗?还是您已经拥有整个实体并且只想更新 2 列?
-
"我想更新那些列。"从您的代码中不清楚新值的来源。
-
如果只需要更新几列,最好使用
FromSqlRaw甚至Dapper,直接执行UPDATE。 LINQ 不修改数据。 ORM,EF,确实如此。 ORM 适用于 Objects 而不是单个属性。加载对象时,EF 将跟踪哪些属性发生变化并生成相应的 UPDATE 语句。
标签: c# sql entity-framework linq .net-core