我正在编写一个应用程序,它从外部API获取数据并使用Entity Framework将其存储到我的SQL Server数据库中。我每天从这个API拉取数据,所以如果一行已经存在,记录将被更新,否则将创建一个新记录。这是通过检查Id来完成的。
现在我遇到的问题是,我只想让EF更新
现在我遇到的问题是,我只想让EF更新
BranchId
和CustomerNameTopdesk
。 CustomerNamePRTG
的值由我手动添加到数据库中。因此,当记录被更新时,它会被设置为空,并且我手动插入的值将丢失。
更新之前
更新后
API返回的数据会被反序列化为JSON格式,并存储在data
变量中,类型为 List<Customers>
。我正在使用以下代码检查记录是否已经存在,如果存在则更新它,否则创建一个新记录。可以看到目前整个 Customer
记录都在被更新,包括值为 NULL 的 CustomerNamePRTG
字段。string apiResponse = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<List<Customers>>(apiResponse);
foreach (Customers customer in data)
{
if (db.Customers.Any(x => x.BranchId == customer.BranchId))
{
db.Customers.Update(customer);
}
else
{
db.Customers.Add(customer);
}
db.SaveChanges();
}
模型
public class Customers
{
[Key]
[JsonProperty("id")]
public string BranchId { get; set; }
[JsonProperty("name")]
public string CustomerNameTopdesk { get; set; }
public string CustomerNamePRTG { get; set; }
}
DbContext
public DbSet<Customers> Customers { get; set; }