如果我有四个表RecordProducts,Records,Products和被告,而RecordProducts具有这些值作为其他三个表的ID。
RecordProductsId,
RecordId,
ProductId,
DefendantId
当我运行实体框架查询以获取RecordProduct和record.Name,product.Name,defantant.Name时 并且我的查询进行了联接,如果有的话,在性能上有什么区别
作为一个例子,我的查询看起来像这样
var recordProducts = context.RecordsProducts
.Where(rp => rp.RecordId == input.RecordId && rp.IsActive == true)
.Include(rp => rp.Record)
.Include(rp => rp.Product)
.Include(rp => rp.Defendant);
var recordProductsVM = recordProducts.Select(rp => new GetRecordProductsViewModel
{
Id = rp.Id,
RecordName = rp.Record.Name ,
ProductName = rp.Product.Name ,
DefendantName = rp.Defendant.Name,
...
});
答案 0 :(得分:0)
在记录产品ID上保持关系,PK,在产品,记录和被告上保持FK。在性能方面,SQL会很好地处理它。替代方法是使用组合键代替RecordProductID。我个人不喜欢使用它们,因为复合记录本身通常可以成为值得单独识别的有价值的实体。即针对此特定组合操作时,可以传递1x ID与3x ID。
使用Select
将实体简化为视图模型时(很高兴看到!),您无需使用Include
。 EF将构建SQL并根据所需数据在表上进行联接。