我有一个简单的数据库:
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();
(是的我知道我可以在删除内部执行语句而不是检索对象,这是为了调试目的,以确保对象确实存在 - 它确实存在。)
当调试器到达SubmitChanges()
行时,我收到运行时错误:
指定的演员表无效。
这是堆栈跟踪,
在System.Data.Linq.IdentityManager中 .StandardIdentityManager .SingleKeyManager`2.TryCreateKeyFromValues(Object []值,V& v)at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(对象[] keyValues)at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(元类型 type,Object [] keyValues)at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType类型, Object [] keyValues)at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, 对象实例)在 System.Data.Linq.ChangeProcessor.BuildEdgeMaps()at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
在System.Data.Linq.DataContext.SubmitChanges()at Driver_SOC_ASO.Controls.PersonalArchive.ArchiveListing.grdArchive_RowDeleting(对象 发件人,GridViewDeleteEventArgs e)in C:\工作\ Driver.Net \驱动-SOC-ASO \驱动-SOC-ASO \控制\ PersonalArchive \ ArchiveListing.ascx.cs:行 78点 System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e)在System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row,Int32 rowIndex)at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,Boolean causeValidation,String validationGroup)at System.Web.UI.WebControls.GridView.RaisePostBackEvent(字符串 eventArgument)at System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
我不知所措,有什么想法吗?
答案 0 :(得分:1)
这可能就是这个bug的一个例子,微软称这是在.NET 4.0中修复的。
答案 1 :(得分:0)
尝试为ArticleId
答案 2 :(得分:0)
在您的dbml中,检查是否存在与文章和用户文章不正确的关联。