第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

EF Core-插入然后更新條目

EF Core-插入然后更新條目

C#
躍然一笑 2021-04-27 17:22:36
在WebApi方法中,如果某個元素不存在,我需要將其插入,并在進行幾次操作后對其進行更新。代碼如下:Entry existingEntry = await _repo.GetEntryByIdAsync(id);existingEntry = await _repo.AddNewEntryAsync(existingAccred);// Some code...// UpdateexistingAccred.IdField = myField;await _repo.UpdateEntryAsync(existingEntry);倉庫如下:    public async Task<Entry> GetEntryByIdAsync(int myId)    {        var result = from entry in _ctx.Set<DALENTRY>()            where entry.ID == myId            select new Entry            {                ID = entry.IdEntry,            };        return await result.AsNoTracking().FirstOrDefaultAsync();    }    public async Task<Entry> AddNewEntryAsync(Entry newEntry)    {        DALENTRY entry = new DALENTRY()        {            GUID = newEntry.GUID,        };        _ctx.Add(entry);        await _ctx.SaveChangesAsync();        newEntry.IdEntry = entry.ID;        return newEntry;    }    public async Task<Entry> UpdateEntryAsync(Entry updateEntry)    {        DALENTRY entry = new DALENTRY()        {            ID = updateEntry.IdEntry,            FIELD= updateEntry.IdField,        };        _ctx.Update(entry);        await _ctx.SaveChangesAsync();        return updateEntry;    }但是,當(dāng)我執(zhí)行更新時,出現(xiàn)以下錯誤:處理請求時發(fā)生未處理的異常。InvalidOperationException:無法跟蹤實體類型“ DALENTRY”的實例,因為已經(jīng)跟蹤了另一個具有相同鍵值的{'ID'}實例。附加現(xiàn)有實體時,請確保僅附加一個具有給定鍵值的實體實例??紤]使用'DbContextOptionsBuilder.EnableSensitiveDataLogging'來查看沖突的鍵值。Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap.Add(TKey鍵,InternalEntityEntry條目)該倉庫被注冊為Transient,如:services.AddTransient<EntryRepository>();我嘗試在插入后使用Detach,但是使用它更新會清除所有未更新的字段。我不記得是什么引起了這個問題。
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

通過先閱讀條目,然后對其進行更新,解決了在倉庫中更改我的更新策略的問題:


public async Task<Entry> UpdateEntryAsync(Entry updateEntry)

{

    DALENTRY entry = await _ctx.Set<DALENTRY >().SingleOrDefaultAsync(a => a.ID == updateEntry.IdEntry);


    entry.FIELD= updateEntry.IdField,


    _ctx.Update(entry);

    await _ctx.SaveChangesAsync();


    return updateEntry;

}


查看完整回答
反對 回復(fù) 2021-05-29
  • 1 回答
  • 0 關(guān)注
  • 361 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號