C# 多对多关系中的自定义关系表

C# 多对多关系中的自定义关系表,c#,entity-framework,C#,Entity Framework,因此,我正在编写一个电子商务应用程序,并试图在产品和大小类之间创建多对多关系。实体看起来是这样的: public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } public class Size { public int Id { get; set; } public str

因此,我正在编写一个电子商务应用程序,并试图在
产品
大小
类之间创建多对多关系。实体看起来是这样的:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

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

public class ProductSize
{
    public int Id { get; set; }
    public int ProductId { get; set; }
    public int SizeId { get; set; }
    public string Amount { get; set; }

    public virtual Size Size { get; set; }
    public virtual Product Product { get; set; }
}
通常我不会显式地创建这个
ProductSize
表,因为EF会为我创建它。但是,我需要
Amount
列坐在那里。现在,为了获得关于产品大小和数量的信息,我必须创建一个非常明确的查询(2个连接)。如果我没有手动创建relationship类,而只是将
产品
类设置为
大小
的虚拟
ICollection
,那么获取完整信息将是一件简单的事情。因此,如果我选择了一个
产品
实例,那么所有大小都将加载到它的
虚拟ICollection

问题是-我能用上面给出的实体结构实现同样的简单性吗?我不想编写一个2-join查询,在这里我显式地提到我想要的每一列,然后将其打包到一些
ViewModel
中,我想使用更简单的语法来获取
Product
实例及其相关数据(以及位于中间表中的数据).

产品
尺寸
中的
产品尺寸
中添加一个,如下所示:

public class Product {
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }

    public virtual ICollection<ProductSize> ProductSizes { get; set; }
}

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

    public virtual ICollection<ProductSize> ProductSizes { get; set; }
}

public class ProductSize {
    public int Id { get; set; }
    public int ProductId { get; set; }
    public int SizeId { get; set; }
    public string Amount { get; set; }

    public virtual Size Size { get; set; }
    public virtual Product Product { get; set; }
}

你不能在
产品
尺寸
两个类上都添加一个
虚拟ICollection
吗?谢谢,我明天会试试,然后接受你的答案。
from p in Context.Products
where p.ProductSizes.Where(ps => ps.Amount > 0 && ps.Size.Name.Equals("Big")).Any()
select p;