日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

EF-InvalidOperation系列

發(fā)布時(shí)間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF-InvalidOperation系列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.InvalidOperation強(qiáng)制轉(zhuǎn)換為值類型 'System.Guid' 失敗,因?yàn)閷?shí)例化的值為 null。結(jié)果類型的泛型參數(shù)或查詢必須使用可以為 null 的類型

?

錯(cuò)誤信息:

The cast to value type 'System.Guid' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type

強(qiáng)制轉(zhuǎn)換為值類型 'System.Guid' 失敗,因?yàn)閷?shí)例化的值為 null。結(jié)果類型的泛型參數(shù)或查詢必須使用可以為 null 的類型

解決:把guid設(shè)置為guid? 具體看圖

?

————————————————————————————————————————————————————————————————————————————————————————————

2.【折中的解決方案】System.InvalidOperationException因?yàn)橄嗤愋偷钠渌麑?shí)體已具有相同的主鍵值

【錯(cuò)誤信息】:System.InvalidOperationException: 附加類型“LoT.Model.ArticleType”的實(shí)體失敗,因?yàn)橄嗤愋偷钠渌麑?shí)體已具有相同的主鍵值。在使用 "Attach" 方法或者將實(shí)體的狀態(tài)設(shè)置為 "Unchanged" 或 "Modified" 時(shí)如果圖形中的任何實(shí)體具有沖突鍵值,則可能會(huì)發(fā)生上述行為。這可能是因?yàn)槟承?shí)體是新的并且尚未接收數(shù)據(jù)庫(kù)生成的鍵值。在此情況下,使用 "Add" 方法或者 "Added" 實(shí)體狀態(tài)跟蹤該圖形,然后將非新實(shí)體的狀態(tài)相應(yīng)設(shè)置為 "Unchanged" 或 "Modified"。

【原因+解決】在更新之前通過(guò)這個(gè)id查詢過(guò)Model,然后再更新了,EF不知道你到底想干什么(有兩個(gè)model),所以就報(bào)錯(cuò)了

最簡(jiǎn)單的方法,你已經(jīng)查了,那么用你查出來(lái)的實(shí)體來(lái)存儲(chǔ)更新后的數(shù)據(jù),這樣id一致而且還省下資源

?具體看圖:

原來(lái)寫法:

?

修改后:

?

------網(wǎng)友方法:

用 AsNoTracking 提醒EF不要跟蹤
return db.EntitySet.AsNoTracking().Where(x => x.BillNo == billNo);

-------------------------Log_Header-------------------------
2015-03-19 00:05:00,598 [12] ERROR log - System.InvalidOperationException: 附加類型“LoT.Model.ArticleType”的實(shí)體失敗,因?yàn)橄嗤愋偷钠渌麑?shí)體已具有相同的主鍵值。在使用 "Attach" 方法或者將實(shí)體的狀態(tài)設(shè)置為 "Unchanged" 或 "Modified" 時(shí)如果圖形中的任何實(shí)體具有沖突鍵值,則可能會(huì)發(fā)生上述行為。這可能是因?yàn)槟承?shí)體是新的并且尚未接收數(shù)據(jù)庫(kù)生成的鍵值。在此情況下,使用 "Add" 方法或者 "Added" 實(shí)體狀態(tài)跟蹤該圖形,然后將非新實(shí)體的狀態(tài)相應(yīng)設(shè)置為 "Unchanged" 或 "Modified"。
在 System.Data.Entity.Core.Objects.ObjectContext.VerifyRootForAdd(Boolean doAttach, String entitySetName, IEntityWrapper wrappedEntity, EntityEntry existingEntry, EntitySet& entitySet, Boolean& isNoOperation)
在 System.Data.Entity.Core.Objects.ObjectContext.AttachTo(String entitySetName, Object entity)
在 System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClass2.<Attach>b__1()
在 System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
在 System.Data.Entity.Internal.Linq.InternalSet`1.Attach(Object entity)
在 System.Data.Entity.Internal.InternalEntityEntry.set_State(EntityState value)
在 System.Data.Entity.Infrastructure.DbEntityEntry`1.set_State(EntityState value)
在 LoT.Dal.BaseDal`1.UpdateModel(T model) 位置 c:\Users\DNT\Desktop\LoTCode\LoTBlog\LoT.Dal\BaseDal.cs:行號(hào) 77
在 LoT.Service.BaseService`1.UpdateModel(T model) 位置 c:\Users\DNT\Desktop\LoTCode\LoTBlog\LoT.Service\BaseService.cs:行號(hào) 63
在 LoTBlog.Back.Controllers.ArticleTypeController.Update(String Name, Nullable`1 Pid, Int32 Status, Int32 Id) 位置 c:\Users\DNT\Desktop\LoTCode\LoTBlog\LoTBlog.Back\Controllers\ArticleTypeController.cs:行號(hào) 147
在 lambda_method(Closure , ControllerBase , Object[] )
在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
在 System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult)

-------------------------Log_Header-------------------------
2015-03-19 00:10:20,296 [7] ERROR log - System.InvalidOperationException: 附加類型“LoT.Model.ArticleType”的實(shí)體失敗,因?yàn)橄嗤愋偷钠渌麑?shí)體已具有相同的主鍵值。在使用 "Attach" 方法或者將實(shí)體的狀態(tài)設(shè)置為 "Unchanged" 或 "Modified" 時(shí)如果圖形中的任何實(shí)體具有沖突鍵值,則可能會(huì)發(fā)生上述行為。這可能是因?yàn)槟承?shí)體是新的并且尚未接收數(shù)據(jù)庫(kù)生成的鍵值。在此情況下,使用 "Add" 方法或者 "Added" 實(shí)體狀態(tài)跟蹤該圖形,然后將非新實(shí)體的狀態(tài)相應(yīng)設(shè)置為 "Unchanged" 或 "Modified"。
在 System.Data.Entity.Core.Objects.ObjectContext.VerifyRootForAdd(Boolean doAttach, String entitySetName, IEntityWrapper wrappedEntity, EntityEntry existingEntry, EntitySet& entitySet, Boolean& isNoOperation)
在 System.Data.Entity.Core.Objects.ObjectContext.AttachTo(String entitySetName, Object entity)
在 System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClass2.<Attach>b__1()
在 System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
在 System.Data.Entity.Internal.Linq.InternalSet`1.Attach(Object entity)
在 System.Data.Entity.Internal.InternalEntityEntry.set_State(EntityState value)
在 System.Data.Entity.Infrastructure.DbEntityEntry`1.set_State(EntityState value)
在 LoT.Dal.BaseDal`1.UpdateModel(T model) 位置 c:\Users\DNT\Desktop\LoTCode\LoTBlog\LoT.Dal\BaseDal.cs:行號(hào) 77
在 LoT.Service.BaseService`1.UpdateModel(T model) 位置 c:\Users\DNT\Desktop\LoTCode\LoTBlog\LoT.Service\BaseService.cs:行號(hào) 63
在 LoTBlog.Back.Controllers.ArticleTypeController.Update(String Name, Nullable`1 Pid, Int32 Status, Int32 Id) 位置 c:\Users\DNT\Desktop\LoTCode\LoTBlog\LoTBlog.Back\Controllers\ArticleTypeController.cs:行號(hào) 146
在 lambda_method(Closure , ControllerBase , Object[] )
在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
在 System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult)

?

總結(jié)

以上是生活随笔為你收集整理的EF-InvalidOperation系列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。