开发者社区> 问答> 正文

使用外键删除LINQ中的记录-无效的强制转换异常

我有一个简单的数据库:

ARTICLE

ArticleId (PK), ArticleTitle ..other stuff...

USER-ARTICLE

ArchiveId (PK), UserId, ArticleId ..other stuff... 的articleId的外键。

我希望能够通过UserArticleId使用以下代码来删除用户文章行,

UserArticle myobjtodelete = PersonalArchiveDb.UserArticles.Single(ua => ua.ArchiveId == 3); PersonalArchiveDb.UserArticles.DeleteOnSubmit(myobjtodelete); PersonalArchiveDb.SubmitChanges(); (是的,我知道我可以在delete内部执行语句,而不是检索对象,这是出于调试目的,以确保对象确实存在-确实如此。)

当调试器上SubmitChanges()线时,出现运行时错误:

指定的演员表无效。

这是堆栈跟踪,

在System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache2.Find(Object [] keyValues)在System.Data.Linq.IdentityManager .StandardIdentityManager .SingleKeyManager2.TryCreateKeyFromValues(Object [] values,V&v)在系统。 Data.Linq.IdentityManager.StandardIdentityManager.Find(System.Data.Linq.CommonDataServices.GetCachedObject(MetaType类型,Object [] keyValues)在System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation关联) ,对象实例)位于System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)处,位于System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)处,位于System.Data.Linq.ChangeProcessor.BuildEdgeMaps() 在System.Data.Linq.DataContext.SubmitChanges()在Driver_SOC_ASO.Controls.PersonalArchive.ArchiveListing.grdArchive_RowDeleting(Object sender,GridViewDeleteEventArgs e)在C:\ work \ Driver.Net \ Driver-SOC-ASO \ Driver-SOC-A-SO \ Controls \ PersonalArchive \ ArchiveListing.ascx.cs:System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e)在System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow行,Int32 rowIndex)处的第78行.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,Boolean causeValidation,字符串validationGroup)在System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument)在System.Web.UI.WebControls.GridView.System.Web System.Web.UI.Page上的.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)。System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)上的RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 在System.Web.UI.Page.ProcessRequestMain处(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)

我很茫然,有什么想法吗?

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 16:39:52 391 0
1 条回答
写回答
取消 提交回答
  • 这可能是此错误的一个示例,Microsoft称此错误已在.NET 4.0中修复。

    2019-11-18 16:40:13
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载