La propriété " Id " est la partie de l'objet de l'information clé et ne peuvent pas être modifiés

J'ai un échantillon de l'application web que je suis en train d'écrire et im confus pourquoi je reçois ce

La propriété " Id " est la partie de l'objet de l'information clé et ne peuvent pas être modifiés.

quand je ne suis pas la mise à jour du 'Id'?

Ok, c'est ce que je suis en train de faire.

J'ai 2 tables de Sujets et de Messages et --

  1. Utilisateur crée un nouveau sujet, il convient d'en ajouter une rubrique enregistrement sur la base de données
  2. Obtenir l'Id de rubrique et définir l'Id de la Poste TopicId
  3. Obtenir ce post, l'Id et le définir comme Sujet LastPostId

Je suis re mise à jour le post, donc à chaque fois que j'ai besoin d'afficher le dernier message du sujet
Je n'ai pas besoin de faire le "tri par date pour tous les postes à l'intérieur de cette rubrique".
Il devrait y avoir une meilleure façon de le faire..

Quand je debug, je vois que
La rubrique Id de la catégorie est définie comme l'Id de la Rubrique
qui je n'ai pas dans mon code de mise à jour.

//
        //insert new topic to database

        Topic topic = new Topic();

        topic.CategoryId = int.Parse(RouteData.Values["id"].ToString());
        topic.Title = postModel.Title;

        topicRepo.Add( topic );
        topicRepo.Save();

        //
        //insert post to database
        PostRepository postRepo = new PostRepository();
        Post post = new Post();

        post.TopicId = topic.Id;
        post.Body = postModel.Body;

        string strUserId = UserAccount.FormatUserName( User.Identity.Name );

        post.CreatedByUser = strUserId;
        post.CreationDate = DateTime.Now;

        postRepo.Add( post );
        postRepo.Save();

        //***********************
        //update topic last post
        //***********************
        Topic updateTopic = topicRepo.GetTopic( topic.Id );
        updateTopic.LastPostId = post.Id;

        TryUpdateModel( updateTopic );
        if ( ModelState.IsValid ) 
            topicRepo.Save();

Merci!

Où est l'exception qui se passe? Je suppose que c'est dans postRepo.Save() ou topicRepo.Save(). Nous allons probablement besoin de voir plus de code.
Il arrive dans tryupdatemodel pour mettre( updateTopic ). Je vois que EF est le réglage de l'Id (14) à 8 (categoryId) qui est bizarre.
Vous pouvez poster postModel et classes Sujet?
Hacıoğulları je suis en utilisant entity framework
Il pourrait aider à ne pas mettre des id mais des objets. Donc updateTopic.LastPost = post au lieu de la définition explicite de l'id.

OriginalL'auteur Platypus Maximus | 2011-04-28