Проблема параллелизма при удалении связанных таблиц - PullRequest
0 голосов
/ 19 августа 2011

Я использую Dbcontext для предоставления и ORM для своего приложения, и я определил свои классы сущностей следующим образом:

    public partial class Article
    {
     public int ArticleID { get; set; }

     //other properties

        [ConcurrencyCheck]
        [Timestamp]
        public byte[] TimeStamp { get; set; } 

     public virtual ICollection<Comment> Comments { get; set; } 
}

 public partial class Comment
    {

        public int CommentID { get; set; }

        //other properties 

        public virtual Article Article { get; set; }

}

А для операций CRUD я следую тому, что вы можете прочитать в этом учебнике

Но когда я хочу удалить статью и связанные с ней комментарии следующим образом:

var qry=from c in _articleRepo.GetArticleByID(id).Comments
                        select c;

                foreach (var item in qry)
                {
                    _commentRepo.DeleteComment(item.CommentID);

                    _commentRepo.Save();
                }



                _articleRepo.DeleteArticle(id);

                _articleRepo.Save();

удаление комментариев работает хорошо, но когда дело доходит до удаления статьи, приложение выдает этоисключение:

Оператор хранения, обновления или удаления затронул неожиданное количество строк (0).Объекты могут быть изменены или удалены с момента загрузки объектов.Обновить записи ObjectStateManager.

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 19 августа 2011

Я думаю, что вы сохраняете свой контекст один-много раз ...

Попробуйте удалить _commentRepo.Save (); и просто Сохранить на _articleRepo.Save ();

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...