Насколько я знаю, последняя версия EF Core 2.1.4
не поддерживает функцию "многие ко многим", как EF 6.2
из коробки.Следовательно, у вас должна быть явная третья таблица (в вашем случае - ProductTags).
Вы можете найти образец конфигурации сопоставления здесь
Как получить теги, связанные с продуктом?Есть десятки способов сделать это, но наиболее подходящим (используя EF и методы расширения) будет:
var tagsByProduct = await context.ProductTags
.Where(item => item.ProductId == 100500)
.Select(item => item.Tag)
.ToListAsync();
или
var tagsByProduct = await context.ProductTags
.Where(item => item.Product.Name == "ProductName")
.Select(item => item.Tag)
.ToListAsync();
или
var tagsByProduct = await context.ProductTags
.Where(item => item.Product.Name == "ProductName")
.Select(item => new { Id = item.Tag.Id, Description = item.Tag.Description })
.ToListAsync();
зависит от ваших требований.
Более того, вы можете явно писать объединения, это будет работать немного быстрее.