如果我想将两个不同表中的 2 个值相乘,我应该在迁移中输入啥? ASP.NET MVC 实体框架

Posted

技术标签:

【中文标题】如果我想将两个不同表中的 2 个值相乘,我应该在迁移中输入啥? ASP.NET MVC 实体框架【英文标题】:What should I type in migration if I want to multiply 2 values from two different tables ? ASP.NET MVC Entity Framework如果我想将两个不同表中的 2 个值相乘,我应该在迁移中输入什么? ASP.NET MVC 实体框架 【发布时间】:2018-10-18 14:21:06 【问题描述】:

这就是我想完成的“计算总动物维护成本。这是通过添加食物成本(食物成本 * 动物重量),住房成本获得的。”我不知道如何计算所有 (PetWeight from PetRescued Table)*(FoodCost from PetSpecies Table) 并将其插入到我的 MaintenanceCost 表中。

例如,我有 4 种宠物,分别是猫、狗、兔子和啮齿动物。宠物的 HousingCost 是 10,20,30,40。这是表 1。对于 PetRescued 表 2,我如何计算多少只猫/狗/.../...的 HousingCost 总和我在我的 PetRescued 数据库中,并将其插入到我的 MaintenanceCost 表中。

这是我的 PetRescued 实体,也是表格之一

public class PetRescued

    public int Id  get; set; 

    public string PetName  get; set; 
    public int PetAge  get; set; 
    public string PetGender  get; set; 
    public double PetWeight  get; set; 
    public DateTime? DateWhenRescued  get; set; 
    public string PetBreedName  get; set;     

    public PetSpecies PetSpecies  get; set; 
    public byte PetSpeciesId  get; set; 

    public PetSanctuary PetSanctuary  get; set; 
    public byte PetSanctuaryId  get; set;     

这是我的 PetSpecies 实体,由 FoodCost 和我的第二张表组成

 public class PetSpecies

    public byte Id  get; set; 


    public string SpeciesName  get; set; 
    public double FoodCost  get; set; 
    public double HousingCost  get; set;  

这是我的 MaintenanceCost 实体,用于存储计算结果

public class MaintenanceCost

    public byte Id  get; set; 

    public double TotalFoodCost  get; set; 
    public double TotalHousingCost  get; set; 
    public double TotalVetBillCost  get; set;     

【问题讨论】:

【参考方案1】:

您需要的查询是这样的。它插入一个包含所有成本总和的实体。

INSERT INTO MaintenanceCost (TotalFoodCost,TotalHousingCost,TotalVetBillCost)
Values (
(SELECT SUM(PetRescued.PetWeight * PetSpecies.FoodCost FROM PetRescued INNER JOIN PetSpecies ON PetRescued.PetSpeciesId = PetSpecies.Id)),
(SELECT SUM(PetSpecies.HousingCost FROM PetRescued INNER JOIN PetSpecies ON PetRescued.PetSpeciesId = PetSpecies.Id)),
"the amount of TotalVetBillCost"
)

但是,这种方法违反了数据库的基本规则,即从不存储可以从数据库中存储的其他数据中检索的数据。另外,很明显,当其他两个表中的数据发生变化时,这个实体将不再有效。

【讨论】:

以上是关于如果我想将两个不同表中的 2 个值相乘,我应该在迁移中输入啥? ASP.NET MVC 实体框架的主要内容,如果未能解决你的问题,请参考以下文章

存储过程将不同表中的值相乘

将不同表中的值相乘

如果我想对来自 2 个表的乘以 2 个值的项目求和,如何在 oracle 中创建过程

有没有办法在保持 O(n) 的同时将两个嵌套数组相乘?

在同一列内相乘

将两个数字相乘然后相加