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;