c# - 如何覆盖数据库中的数据?[ASP.NET]
问题描述
此代码将我的数据保存到数据库中。该应用程序记录每月每一天花费的时间。
他们使用 EF 写入 SQL Server 中的数据库。问题只是我希望他们覆盖而不是写更多
控制器:
List<Karta_Model> objNextKartaModel = new List<Karta_Model>();
for (int i = 0; i < liczbaDni; i++)
{
var modelNext = new Karta_Model()
{
Login = userName,
Rok = numerRoku,
Miesiac = numerMiesiaca,
DzMiesiaca = modelKarta.Model1[i].DzMiesiaca.Value,
DzTygodnia = modelKarta.Model1[i].DzTygodnia,
Rozpoczecie = modelKarta.Model1[i].Rozpoczecie
....
};
objNextKartaModel.Add(modelNext);
await _ecpContext.Karta.AddRangeAsync(objNextKartaModel);
await _ecpContext.SaveChangesAsync();
}
Id
在 SQL Server 中定义为:
[Id] [int] IDENTITY(1,1)
我想出了从之前保存的数据库中提取第一行 ID 的想法
var nrIdBase = _ecpContext.Karta
.FirstOrDefault(f => f.DzMiesiaca == 1 &&
f.Miesiac == numerMiesiaca &&
f.Rok == numerRoku &&
f.Login == userName).Id;
但我不知道如何使用它。
我试过这样的事情:
for (int i = 0; i < liczbaDni; i++)
{
var modelNext = new Karta_Model()
{
Id = nrIdBase +i,
Login = userName,
Rok = numerRoku,
Miesiac = numerMiesiaca,
DzMiesiaca = modelKarta.Model1[i].DzMiesiaca.Value,
DzTygodnia = modelKarta.Model1[i].DzTygodnia,
Rozpoczecie = modelKarta.Model1[i].Rozpoczecie
....
};
}
但我收到一个错误:
InvalidOperationException:无法跟踪实体类型“Karta_Model”的实例,因为已经在跟踪具有相同键值 {'Id'} 的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用“DbContextOptionsBuilder.EnableSensitiveDataLogging”来查看冲突的键值。
有谁知道如何做到这一点?
如何覆盖一次保存的数据?
解决方案
为了更新数据库中的现有记录,您需要在更新操作之前拥有它的 ID。
然后你可以这样做:
var existingRecord = _ecpContext.Karta.FirstOrDefault(x => x.Id == theExistingId);
if (existingRecord != null) {
existingRecord.Login = "CHANGED";
await _ecpContext.SaveChangesAsync()
}
您正在使用的此调用:
await _ecpContext.Karta.AddRangeAsync(objNextKartaModel);
仅用于向数据库添加新项目。
推荐阅读
- react-native - 如何在 React-Navigation 上传递道具,以便导航组件可以在这些道具更改时重新渲染
- node.js - InversifyJS 注入 express.Application
- apache-kafka - 当 Kafka 主题只有一个分区和多个消费者时会发生什么?
- linux - 使用 SAS EG 包含文件时如何指定本地目录?
- php - PHP ksort 意外行为
- python - 将标头值传递给 django 中的获取请求
- ios - 照片库中的视频磁贴
- azure - 单一分区上的 CosmosDB 跨分区查询错误
- typescript - TypeScript:可区分联合的通用 switchExpression 函数
- mongodb - 具有自动文档计数的 Mongoose 字段