3

私は単純なデータベースを持っています:

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 .SingleKeyManager`2.TryCreateKeyFromValues(Object[] 値、V& v) で System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues) で System. Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType タイプ、Object[] keyValues) で System.Data.Linq.CommonDataServices.GetCachedObject(MetaType タイプ、Object[] keyValues) で System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc) 、オブジェクト インスタンス) System.Data.Linq.ChangeProcessor.BuildEdgeMaps() で System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) で System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) で
System.Data.Linq.DataContext.SubmitChanges() で Driver_SOC_ASO.Controls.PersonalArchive.ArchiveListing.grdArchive_RowDeleting (オブジェクト送信者、GridViewDeleteEventArgs e) で C:\work\Driver.Net\Driver-SOC-ASO\Driver-SOC-ASO \Controls\PersonalArchive\ArchiveListing.ascx.cs: System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e) の 78 行目 System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow 行、Int32 rowIndex) システムでSystem.Web.UI.WebControls.GridView.System.Web の System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) の .Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causeValidation, String validationGroup) System.Web.UI.Page の .UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)。RaisePostBackEvent (IPostBackEventHandler sourceControl、String eventArgument) で System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain で (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint)

私は途方に暮れています、何かアイデアはありますか?

4

3 に答える 3

1

これは、Microsoft が .NET 4.0 で修正されたと言っているこのバグの例である可能性があります。

于 2009-06-04T00:01:23.600 に答える
0

ONCASCADEDELETEを設定してみてくださいArticleId

于 2009-04-05T03:39:21.233 に答える
0

dbml で、B/W Article と UserArticle の関連付けが正しくないかどうかを確認します。

于 2010-03-10T21:46:48.917 に答える