Я пытаюсь добавить одну и ту же запись в несколько строк.
Мой проект содержит таблицу 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 содержит массив тегов.
Так почему же теги дублируются, а не связаны с разными магазинами?
Заранее спасибо.