У меня есть простая база данных:
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 (значения объекта [], V & v) в
System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find (Object []
keyValues) в
System.Data.Linq.IdentityManager.StandardIdentityManager.Find (метатип
тип, Object [] keyValues) в
System.Data.Linq.CommonDataServices.GetCachedObject (тип MetaType,
Object [] keyValues) в
System.Data.Linq.ChangeProcessor.GetOtherItem (ассоциация MetaAssociation,
Экземпляр объекта) в
System.Data.Linq.ChangeProcessor.BuildEdgeMaps () в
System.Data.Linq.ChangeProcessor.SubmitChanges (ConflictMode
faultMode) в
System.Data.Linq.DataContext.SubmitChanges (ConflictMode faultMode)
в System.Data.Linq.DataContext.SubmitChanges () в
Driver_SOC_ASO.Controls.PersonalArchive.ArchiveListing.grdArchive_RowDeleting (Объект
отправитель, GridViewDeleteEventArgs e) в
C: \ работа \ Driver.Net \ Driver-SOC-ASO \ Driver-SOC-ASO \ Controls \ PersonalArchive \ ArchiveListing.ascx.cs: линия
78 в
System.Web.UI.WebControls.GridView.OnRowDeleting (GridViewDeleteEventArgs
e) в System.Web.UI.WebControls.GridView.HandleDelete (GridViewRow
row, Int32 rowIndex) в
System.Web.UI.WebControls.GridView.HandleEvent (EventArgs e, Boolean
reasonValidation, String validationGroup) в
System.Web.UI.WebControls.GridView.RaisePostBackEvent (String
eventArgument) в
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String
eventArgument) в
System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler
sourceControl, String eventArgument) в
System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain (Boolean
includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)
Я в недоумении, есть идеи?