作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在尝试批量更新( EFCore.BulkExtensions )基于主键的表。我们只需要更新 Name
基于 Id
而不是 Age
模型
public class Student
{
public int Id { get; set; } // Primary Key
public string Name { get; set; }
public int Age { get; set; }
}
List<Student> students = new List<Student>();
students.Add(new Student()
{
Id = 1,
Name = "Name 1",
Age = 25
});
var updateByProperties = new List<string> { nameof(Student.Id) };
var propToExclude = new List<string> { nameof(Student.Id) };
var bulkConfig = new BulkConfig { UpdateByProperties = updateByProperties, PropertiesToExclude = propToExclude };
_dbContext().BulkUpdate(students, bulkConfig);
Name
具有
Id
的行为 1 但我收到以下错误
The given key 'Id' was not present in the dictionary.
最佳答案
假设 Id
是 主键(PK)并且您只需要更新 Name
基于 Id
而不是 Age
.
需要设置PropertiesToInclude
BulkConfig
内的属性.注意:您不必使用 PropertiesToInclude
和 PropertiesToExclude
同时。 (如果您想包含超过一半的属性,最好使用 PropertiesToExclude
,但在您的情况下,您只想更改 Name,因此我们将使用属性 Include)。
此外,不需要定义 UpdateByProperties
, 因为你想通过 Id
更新数据(这是PK)。 UpdateByProperties
定义用作更新查找的属性。
所以代码应该是这样的:
List<Student> students = new List<Student>();
students.Add(new Student()
{
Id = 1,
Name = "Name 1",
Age = 25
});
var propToInclude = new List<string> { nameof(Student.Name) };
var bulkConfig = new BulkConfig { PropertiesToInclude = propToInclude };
_dbContext().BulkUpdate(students, bulkConfig);
关于c# - EFCore.BulkExtensions - 使用 pimarykey 的 BulkUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61641818/
我们正在尝试批量更新( EFCore.BulkExtensions )基于主键的表。我们只需要更新 Name基于 Id而不是 Age 模型 public class Student { pub
我是一名优秀的程序员,十分优秀!