I was trying to answer a user’s problem in MSDN forum. He was trying to add a term in term store. Using the term adding code (that I have taken from the post) I was getting the error “Term set update failed because of save conflict.” while I was calling the CommitAll method.
Problematic Code
My code is as shown below:
public static void AddTerminTermStoreManagement(string siteUrl, string termSetName, string Term) { try { using (var siteTerm = new SPSite(siteUrl)) { var sessionTerm = new TaxonomySession(siteTerm); var termStoreTerm = sessionTerm.DefaultSiteCollectionTermStore; var collection = termStoreTerm.GetTermSets(termSetName, 1033); var termSet = collection.FirstOrDefault(); if (!termSet.IsOpenForTermCreation) { termSet.IsOpenForTermCreation = true; } termSet.CreateTerm(Term, sessionTerm.TermStores[0].DefaultLanguage); termStoreTerm.CommitAll(); } } catch { } }
After investigating the code I had found the problem was in the line as shown in the above code snippet with yellow marker (termSet.IsOpen..).
Solution
I have fixed the error by modifying the code as shown below. I had just called the CommitAll just after changing the value of IsOpenForTermCreation as shown below:
public static void AddTerminTermStoreManagement(string siteUrl, string termSetName, string Term) { try { using (var siteTerm = new SPSite(siteUrl)) { var sessionTerm = new TaxonomySession(siteTerm); var termStoreTerm = sessionTerm.DefaultSiteCollectionTermStore; var collection = termStoreTerm.GetTermSets(termSetName, 1033); var termSet = collection.FirstOrDefault(); if (!termSet.IsOpenForTermCreation) { termSet.IsOpenForTermCreation = true; termStoreTerm.CommitAll(); } termSet.CreateTerm(Term, sessionTerm.TermStores[0].DefaultLanguage); termStoreTerm.CommitAll(); } } catch { } }
Conclusion
So the problem was that when I changed the value of IsOpenForTermCreation, there was a commit pending. So without committing, I created a new term and tried to committed. So the save conflict error was thrown. If you get the same error in different scenario then u can check if u have any pending commit that u have not committed.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.