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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关于Linq to SQL 的“异常详细信息: System.InvalidCastException: 指定的转换无效。”

發(fā)布時間:2023/12/19 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Linq to SQL 的“异常详细信息: System.InvalidCastException: 指定的转换无效。” 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開發(fā)環(huán)境:VS2010,SQL Server2005,Windows7,使用LINQ to SQL作為ORM

運(yùn)行環(huán)境:Windows2003(IIS6),.NET 3.5 SP1,SQL Server2000

癥狀:開發(fā)環(huán)境下一切正常,在運(yùn)行環(huán)境中出現(xiàn)如下錯誤:

?

代碼 指定的轉(zhuǎn)換無效。?
說明:?執(zhí)行當(dāng)前?Web?請求期間,出現(xiàn)未處理的異常。請檢查堆棧跟蹤信息,以了解有關(guān)該錯誤以及代碼中導(dǎo)致錯誤的出處的詳細(xì)信息。?

異常詳細(xì)信息:?System.InvalidCastException:?指定的轉(zhuǎn)換無效。

源錯誤:?

執(zhí)行當(dāng)前?Web?請求期間生成了未處理的異常。可以使用下面的異常堆棧跟蹤信息確定有關(guān)異常原因和發(fā)生位置的信息。??

堆棧跟蹤:?


[InvalidCastException:?指定的轉(zhuǎn)換無效。]
???System.Data.Linq.SingleKeyManager`2.TryCreateKeyFromValues(Object[]?values,?V&?v)?+59
???System.Data.Linq.IdentityCache`2.Find(Object[]?keyValues)?+28
???System.Data.Linq.StandardIdentityManager.Find(MetaType?type,?Object[]?keyValues)?+23
???System.Data.Linq.CommonDataServices.GetCachedObject(MetaType?type,?Object[]?keyValues)?+48
???System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation?assoc,?Object?instance)?+142
???System.Data.Linq.ChangeProcessor.BuildEdgeMaps()?+254
???System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode?failureMode)?+59
???System.Data.Linq.DataContext.SubmitChanges(ConflictMode?failureMode)?+331
???System.Data.Linq.DataContext.SubmitChanges()?+19
???Senparc.Web.Admin.ProductEdit.btnSubmit_Click(Object?sender,?EventArgs?e)?+847
???System.Web.UI.WebControls.Button.OnClick(EventArgs?e)?+111
???System.Web.UI.WebControls.Button.RaisePostBackEvent(String?eventArgument)?+110
???System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String?eventArgument)?+10
???System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler?sourceControl,?String?eventArgument)?+13
???System.Web.UI.Page.RaisePostBackEvent(NameValueCollection?postData)?+36
???System.Web.UI.Page.ProcessRequestMain(Boolean?includeStagesBeforeAsyncPoint,?Boolean?includeStagesAfterAsyncPoint)?+1565

?

?

?分析原因:

注意到“System.Data.Linq.IdentityCache`2.Find(Object[]?keyValues)?+28”這一句,說明和數(shù)據(jù)庫的主鍵很可能有關(guān),于是排查有關(guān)主鍵的所有操作。最后發(fā)現(xiàn),在SQL數(shù)據(jù)庫中,有兩個表的主鍵為ID(int類型),并且沒有關(guān)聯(lián);而在LINQ to SQL中,這兩個表進(jìn)行了關(guān)聯(lián),并且關(guān)聯(lián)的字段都為非主鍵的Guid類型。于是猜測可能是LINQ to SQL對主鍵的映射出現(xiàn)了問題。

?

解決方法1:在LINQ to SQL的.dbml文件中(也可以可視化操作其屬性),將這兩個表的主鍵變?yōu)镚uid外連字段。問題解決。

解決方法2:使數(shù)據(jù)庫和LINQ to SQL同步,修改數(shù)據(jù)庫中的主鍵,并使用LINQ to SQL重新自動生成映射。

?

結(jié)論:網(wǎng)上搜了一下,似乎沒有提到這種處理方法,反而提到了和Guid相關(guān)的很多信息,可以比較肯定的是:這是一個.NET3.5中的bug,在4.0的環(huán)境中已經(jīng)解決。

總結(jié)

以上是生活随笔為你收集整理的关于Linq to SQL 的“异常详细信息: System.InvalidCastException: 指定的转换无效。”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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