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 --
- Utilisateur crée un nouveau sujet, il convient d'en ajouter une rubrique enregistrement sur la base de données
- Obtenir l'Id de rubrique et définir l'Id de la Poste TopicId
- 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!
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
Vous devez vous connecter pour publier un commentaire.
Cela se produit parce que tryupdatemodel pour mettre tente de mettre à jour tous affiché des valeurs. Donc, si vous avez une ou plusieurs valeurs que vous ne voulez pas mis à jour, vous devez le faire manuellement.
Par exemple:
Je suppose qu'une propriété nommée "ID" est également présenté dans cette action, l'origine de l'erreur.
Mais que faire si la modification de l'ID est l'ID de la propriété d'une propriété du modèle et que je veux modifier référencé dans la propriété de celui qui a dit ID ??? Exemple : class A {int ID; B prop;} class B { int ID; } je veux enregistrer Un objet faisant référence à l'objet B avec id = 2 au lieu de l'un avec l'id = 1 ??? Je veux changer un.b.ID...
Uhmm je voudrais en fait avoir à regarder le code. Mais du haut de ma tête, je pense que vous pouvez le faire: tryupdatemodel pour mettre(updateTopic, "", null, new string[] { "B. Id" });
Même s'il a été un long moment, @billy, votre un objet doit avoir une propriété de référencement, le b de la classe. Changer, pas l'id de la propriété.
OriginalL'auteur Francisco