[英]EF Core Many to Many relation and HTTP calls
我目前有2节课
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public double Height {get ; set; }
public double Width {get ; set; }
public double Depth {get ; set; }
public ICollection<Part> Parts { get; set; }
}
和
public class Part
{
public int PartID { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public double Height {get ; set; }
public double Width {get ; set; }
public double Depth {get ; set; }
public ICollection<Product> Products { get; set; }
}
由于产品可以由多个部分组成并且一个部分可以在许多产品中使用,因此具有多对多关系。
我读到EF Core仍然无法自动处理此关系,因此我将拥有以下加入实体:
public class ProductPart
{
public int ProductID { get; set; }
public Product Product { get; set; }
public int PartID { get; set; }
public Part Part { get; set; }
}
我的问题是,当尝试回答以下对api的调用时,
api/Product/{id}/Parts //Parts used in Product with {id}
api/Product/{id}/PartsIn //Products in which Part with {id} is used
我是否必须编写一个ProductPartDTO并从Product控制器调用它,或者我该如何处理这些调用?
我使用连接表在DbContext OnModelCreating中处理此问题。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.HasMany(e => e.Parts)
.WithMany(e => e.Products)
.Map(m => m.ToTable("ProductParts").MapLeftKey("PartID").MapRightKey("ProductID"));
}
需要注意的一件事是,您提到了HTTP调用,如果使用JSON,则由于自引用对象,JSON序列化程序在返回此数据时会遇到问题。 您需要填充返回结果时不会互相引用的DTO(数据传输对象)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.