我有实体产品和标签。我在两个表之间有很多关系,所以我有第三表。
我的产品实体:
public class Product
{
public Guid Id { get; private set; }
public string Name { get; private set; }
public List<ProductTags> ProductTags { get; private set; }
}
我的标签实体:
public class Tag
{
public Guid Id { get; private set; }
public string Description { get; private set; }
public List<ProductTags> ProductTags { get; private set; }
}
我的ProductTags实体:
public ProductTags
{
public Guid ProductId { get; private set; }
public Product Product { get; private set; }
public Guid TagId { get; private set; }
public Tag Tag { get; private set; }
}
如何使用Entity Framework Core获取与产品相关的标签?
很抱歉,我的英语知识很差。
答案 0 :(得分:1)
据我所知,EF Core 2.1.4
的最新版本不支持{@ 1}}的多对多功能。因此,您应该明确拥有第3个表格(以您的情况为ProductTags)。
您可以找到映射配置示例here
如何获取与产品相关的标签?有很多方法可以做到,但是最合适的方法(使用EF和扩展方法)将是:
EF 6.2
或
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();
取决于您的要求。
此外,您可以显式编写联接,这样会更快一点。