如果要将两个不同表中的2个值相乘,应该在迁移中键入什么? ASP.NET MVC实体框架

时间:2018-10-18 14:21:07

标签: sql asp.net asp.net-mvc-4

这就是我要完成的“计算动物总维护成本。这是通过将食品成本(食品成本*动物体重)与住房成本相加得出的”。我不知道如何对所有数据(PetRescued表中的PetWeight)*(PetSpecies表中的FoodCost)进行计算,并将其插入我的MaintenanceCost表中。

例如,我有4种宠物,即猫,狗,兔子和啮齿动物。宠物的HousingCost为10、20、30、40。这是表1。对于表2(即PetRescued),我如何计算多少只猫/狗/ ... / ...的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 个答案:

答案 0 :(得分:0)

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

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"
)

但是,这种方法违反了数据库的基本规则之一,该规则永远不会存储可以从数据库中存储的其他数据中检索到的数据。同样,很明显,当其他两个表中的数据发生更改时,该实体将不再有效。