![](/img/trans.png)
[英]How do I properly update a list property in my database using EF Core CF
[英]How do I properly update the list data in my table using EF Core
我有兩個表CurrentItem
和CurrentItemDataPoints
。
CurrentItem
表具有列數據,例如Id(pk), ItemId, Name, Price
等,其中表CurrentItemDataPoints
包含每個項目的 30 天數據點。
所以比如說..
itemId: 5, date, price
itemId: 5, date, price
itemId: 5, date, price
...
其中每一個都是CurrentItemDataPoints
中的一行
itemId
與itemId
相關,date 是日期,price 是價格。
現在我構建模型的方式是這樣的
public class CurrentItem
{
public int itemId { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public List<CurrentItemDataPoints> The30DayPoints { get; set; } = new List<The30DataPointsModel>();
}
和 CurrentItemDataPoints
public partial class CurrentItemDataPoints
{
public int itemId { get; set; }
public string date { get; set; }
public long price{ get; set; }
}
我正在嘗試更新存儲數據點的表,所以每個項目大約有 10 個數據點
using (var db = new RuneMarketDbContext())
{
foreach (var item in buySellData.Take(10))
{
var theItem = db.CurrentPriceTableModels.FirstOrDefault(x => x.Id == item.Value.Id);
if (theItem != null)
{
// Item ID: item.Key
var url = the30daydata + $"{item.Key}.json";
var woop = await client.GetStringAsync(url);
var datapoints = JsonConvert.DeserializeObject<The30DataPointsModel[]>(woop).ToList();
Console.WriteLine($"{item.Value.Id}: Updating item data /w datapoint");
theItem.Id = item.Value.Id;
// ...
theItem.The30DayPoints = datapoints;
db.CurrentPriceTableModels.Update(theItem);
db.SaveChanges();
}
}
}
正如你所看到的,我這樣做的方式是這樣做theItem.The30DayPoints = datapoints;
但這只是將更多數據附加到表中。
如何正確更新(替換)我的CurrentItemDataPoints
表中的數據?
您需要刪除數據庫中的舊數據點或從中獲取它們(通過Include
像這樣: db.CurrentPriceTableModels.Include(x => x.The30DayPoints).FirstOrDefault(x => x.Id == item.Value.Id)
)和然后以某種方式匹配它們(例如基於日期),添加新的並更新現有的(並刪除缺失的,取決於您的應用程序邏輯)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.