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

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將這些方法從 EF 6 轉(zhuǎn)換為 EF Core

將這些方法從 EF 6 轉(zhuǎn)換為 EF Core

C#
慕俠2389804 2022-12-31 10:37:27
我一直在嘗試實(shí)現(xiàn)一種解決方案,以在斷開連接的情況下正確設(shè)置實(shí)體上的狀態(tài)(在這種情況下,每次調(diào)用 NetCore API 都會(huì)加載 DBContext 的新實(shí)例)。Julie Lehrmann 的 Book Programming Entity Framework 中有一個(gè)解決方案,它提出了一個(gè)我想要實(shí)現(xiàn)的解決方案。不幸的是,它是為 EF 6 編寫的。如何為 EF Core 編寫這些方法?public BreakAwayContext(){  ((IObjectContextAdapter)this).ObjectContext    .ObjectMaterialized += (sender, args) =>    {      var entity = args.Entity as IObjectWithState;      if (entity != null)      {        entity.State = State.Unchanged;        entity.OriginalValues =          BuildOriginalValues(this.Entry(entity).OriginalValues);      }    };}private static Dictionary<string, object> BuildOriginalValues(  DbPropertyValues originalValues){  var result = new Dictionary<string, object>();  foreach (var propertyName in originalValues.PropertyNames)  {    var value = originalValues[propertyName];    if (value is DbPropertyValues)    {      result[propertyName] =        BuildOriginalValues((DbPropertyValues)value);    }    else    {      result[propertyName] = value;    }  }  return result;}最后這個(gè)方法private static void ApplyChanges<TEntity>(TEntity root)  where TEntity : class, IObjectWithState{  using (var context = new BreakAwayContext())  {    context.Set<TEntity>().Add(root);    CheckForEntitiesWithoutStateInterface(context);    foreach (var entry in context.ChangeTracker      .Entries<IObjectWithState>())    {      IObjectWithState stateInfo = entry.Entity;      entry.State = ConvertState(stateInfo.State);      if (stateInfo.State == State.Unchanged)      {        ApplyPropertyChanges(entry.OriginalValues,         stateInfo.OriginalValues);      }    }    context.SaveChanges();  }}非常感謝您幫助我將其翻譯成 EF Core 兼容代碼!原始代碼可以在這里找到 https://www.oreilly.com/library/view/programming-entity-framework/9781449331825/ch04.html
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

您很快將不再需要將它們遷移到 EF Core,因?yàn)?a >EF 6.3 將以 .NET Standard 2.1 為目標(biāo)。

要使用它,您需要將項(xiàng)目遷移到 .NET Core 3.0 或 .NET Standard 2.1 for libraries。

.NET Core 3.0 將在今年下半年發(fā)布,或者你可以像現(xiàn)在一樣使用預(yù)覽版 SDK 冒一點(diǎn)風(fēng)險(xiǎn)。


查看完整回答
反對 回復(fù) 2022-12-31
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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