2

MVC 3 で Entity Framework 4.1 を使用しています。

私が得ている問題は、カテゴリが添付された新しい質問をデータベースに保存すると、質問と QuestionCategories テーブルが更新されるだけですが、カテゴリテーブルに新しい重複エントリが追加されることです。

public class Question{
   public int QuestionId{ get; set; }
   public string QuestionName { get; set;}
   public virtual IList<Category> Categories{ get; set; }
}

public class Category{
  public int CategoryId{ get; set; }
  public string CategoryName { get; set; }
}


modelBuilder.Entity<Question>()
   .HasMany(e => e.Categories)
   .WithMany() // don't need?
   .Map(mc => mc
   .ToTable("QuestionCategories")
   .MapLeftKey("QuestionId")
   .MapRightKey("CategoryId"));


public long CreateQuestion(Question question)
{ 
   this.repository.questions.Add(question); 
   this.repository.SaveChanges();
   return question.Id;

}


public void AddCategoryToQuestion(question question, List<long> CategoryIds)
{
   if (question.Categories == null)
       question.Categories = new List<Category>();

   foreach (long CategoryId in CategoryIds)
   {
       if (question.Categories.FirstOrDefault(q => q.Id == CategoryId) == null)
       {
           Category category = this.CategoryService.GetCategoryById(CategoryId);
           if (category != null)
           {
              question.Categories.Add(category);
           }
        }
   }
}

public void SaveQuestion(Question Question)
{
    this.repository.Questions.Attach(Question);
    this.repository.SetModified(Question);
    this.repository.SaveChanges();
}


Category Table 
Before SaveQuestion runs when user assigns Operations Category to a new question.

CategoryId  CategoryName 
1           Operations
2           Safety


After SaveQuestion runs

CategoryId  CategoryName 
1           Operations
2           Safety
3           Operations

前もって感謝します。

4

0 に答える 0