代码之家  ›  专栏  ›  技术社区  ›  thelittlewozniak

如何从实体框架数据库中获取包含在类中的项列表

  •  -1
  • thelittlewozniak  · 技术社区  · 7 年前

    我的申请有问题。我不能从数据库中得到一个有列表的对象。我真的不擅长实体框架,所以如果这是一个很大的错误,我很抱歉。

    public List<Recipe> GetRecipes(Cook cook)
        {
            List<Recipe> L_Recipes = new List<Recipe>();
            Cook Cook = dbc.DbCook.SingleOrDefault(c => c.Nickname == cook.Nickname);
            L_Recipes = Cook.ListRecipes;
            return L_Recipes;
        }
    

    这就是 Recipe 班级:

      public class Recipe
    {
        //Attributes
        public int Id { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }
        public float CostPrice { get; set; }
        public float SellingPrice { get; set; }
        public DateTime Date { get; set; }
        public List<Ingredient> ListIngredients { get; set; }
        public List<Comment> ListComments { get; set; }
        public Schedule Schedules { get; set; }
        //Builder
        public Recipe(string name, string type)
        {
            Name = name;
            Type = type;
            Date = DateTime.Now;
            ListIngredients = new List<Ingredient>();
            Schedules = new Schedule();
        }
        public Recipe(string name,string type,float costPrice,float SellingPrice,DateTime Date,List<Ingredient> ListIngredients,List<Comment> ListComments,Schedule Schedules)
        {
            this.Name = name;
            this.Type = type;
            this.CostPrice = costPrice;
            this.SellingPrice = SellingPrice;
            this.Date = Date;
            this.ListIngredients = ListIngredients;
            this.ListComments = ListComments;
            this.Schedules = Schedules;
        }
        public Recipe() { ListIngredients = new List<Ingredient>(); }
        //Methods
        public void AddIngredient(Ingredient i)
        {
            ListIngredients.Add(i);
        }
        public float CalculCostPrice()
        {
            float cost = 0;
            foreach (Ingredient ing in ListIngredients)
            {
                cost += ing.CalculCostIngredient();
            }
            return cost;
        }
        public float CalculSellingPrice()
        {
            return (float)(CalculCostPrice()*1.05);
        }
        public override string ToString()
        {
            string SP = string.Format("{0:00.00}", SellingPrice);
            return $"{Name} for {SP} euros added the {Date.ToString()}";
        }
    }
    

    问题是我收到了配方的信息,但没有收到其中的列表。

    它在ASP.NET中

    包括代码:

            public List<Recipe> GetRecipes(Cook cook)
        {
            List<Recipe> L_Recipes = new List<Recipe>();
            Cook Cook = dbc.DbCook.Include(c => c.ListRecipes).singleOrDefault(c => c.Nickname == cook.Nickname);
            L_Recipes = Cook.ListRecipes;
            return L_Recipes;
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   thelittlewozniak    7 年前

    谢谢 https://stackoverflow.com/users/395675/philip-smith https://stackoverflow.com/users/5748194/felipe-deveza 所以答案是使用include并添加一个using 包括: public List<Recipe> GetRecipes(Cook cook) { List<Recipe> L_Recipes = new List<Recipe>(); Cook Cook = dbc.DbCook.Include(c => c.ListRecipes).singleOrDefault(c => c.Nickname == cook.Nickname); L_Recipes = Cook.ListRecipes; return L_Recipes; } 使用方法: using System.Data.Entity;

    推荐文章