我有两个表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
相关,日期是日期,价格是价格。
现在,我构建模型的方式是这样的>>
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
表中的数据?
我有两个表CurrentItem和CurrentItemDataPoints。 CurrentItem表具有列数据,例如Id(pk),ItemId,Name,Price等,其中表CurrentItemDataPoints拥有30天的时间...
您需要删除数据库中的旧数据点或从中获取它们(例如通过Include
:db.CurrentPriceTableModels.Include(x => x.The30DayPoints).FirstOrDefault(x => x.Id == item.Value.Id)
),然后以某种方式进行匹配(例如,基于日期),添加新数据并更新现有数据(并删除丢失的,依赖的在您的应用程序逻辑上)。