我有一個場景,我有用戶向一個epi終端提交條目,資料庫中的一個標志被更新為1。用戶可以根據自己的感覺和需要每次提交多個條目。我有一個邏輯,檢查一個條目是否存在,如果一個用戶提交了另一個表格,以前的表格被設定為0,新的表格被設定為1。每當我提交第二個條目時,我就會出現一個錯誤
。物體型別'EntityQueryable'沒有找到。請確保 該物體型別已被添加到模型中。 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.GetOrCreateEntry(Object 物體)
這是我的檢查邏輯
public async Task< Entrys> AddEntrys(Entrys entrys)。
{
var pastSurveys = _context.Entrys.Where(e => e.UpdateBy == entrys.UpdateBy && e.Month == entrys.Month
&& e.Day == entrys.Day && e.Year == entrys.Year && e.CurrentStatus==true).AsQueryable()。
if (pastSurveys.Count() > 0)
{
foreach (Entrys e in pastSurveys)
{
if (e.CurrentStatus == true)
{
e.CurrentStatus = false;
}
}
_context.Add(pastSurveys);
_context.SaveChanges()。
}
entrys.Id = Guid.NewGuid().ToString()。
_context.Add(entrys);
_context.SaveChanges()。
return entrys;
}
我怎樣才能讓我的邏輯繼續檢查現有的調查并將其更新為0,同時將新的調查設定為1,而不會出現上述錯誤。謝謝你的幫助
。uj5u.com熱心網友回復:
問題是你沒有更新物體,而是插入了它們。另外你不需要兩個SaveChanges呼叫。pastSurveys.Count()也執行了不必要的查詢。
更正后的方法:
public async Task< Entrys> AddEntrys(Entrys entrys)。
{
var pastSurveys = _context.Entrys
.Where(e => e.UpdateBy == entrys.UpdateBy && e.Month == entrys.Month
&& e.Day == entrys.Day && e.Year == entrys.Year && e.CurrentStatus == true)
.ToList()。
foreach (Entrys e in pastSurveys)
{
e.CurrentStatus = false;
}
entrys.Id = Guid.NewGuid().ToString()。
_context.Add(entrys);
_context.SaveChanges()。
return entrys;
}
uj5u.com熱心網友回復:
Hi @arrif 從你的實作來看
把_context.Add(pastSurveys);改為_context.UpdateRange(pastSurveys);
從你目前的設定來看,你添加而不是更新標志。試試這個方法,并告訴它是否有效
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333673.html
標籤:
