ASP.NET Дублирование записей при добавлении в несколько строк - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь добавить одну и ту же запись в несколько строк.
Мой проект содержит таблицу Store и таблицу Tag . Это отношения многие ко многим; Каждый магазин может содержать несколько тегов, и каждый тег может быть связан с несколькими магазинами.

Store.cs:

public class Store{
   public int Id { get; set; }
   public virtual ICollection<Tag> Tags { get; set; }
}



Tag.cs ​​

public class Tag{
       public int Id { get; set; }
       public string Name { get; set; }
    }

Метки размещаются отдельно, а затем относятся к магазинам в запросе PUT.

StoreController.cs

public async Task<IHttpActionResult> PutStore(int id, StoreViewModel model){
         var store = await db.Stores.FindAsync(id);
          if (model.tags != null)
                {
                    foreach (var modelTag in model.tags)
                    {
                        var databaseTag = db.Tags.FirstOrDefault(c => c.Name == modelTag.Name);
                        if (databaseTag == null)
                            store.Tags.Add(new Tag()
                            {
                                Name = modelTag.Name
                            });
                        else
                            if (!store.Tags.Any(sc => sc.Name == modelTag.Name))
                                store.Tags.Add(databaseTag);
                    }

                    foreach (var storeTag in store.Tags.ToList())
                        if (!model.tags.Any(s => s.Name == storeTag.Name))
                            store.Tags.Remove(storeTag);
                }
}

StoreViewModel содержит массив тегов.
Так почему же теги дублируются, а не связаны с разными магазинами?
Заранее спасибо.

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