实体框架无法获得多对多关系的结果

时间:2017-01-16 16:23:31

标签: entity-framework

当我遇到一个奇怪的情况时,我正试图探索Code First。我创建了3个表,实体框架为我的多对多关系创建了第4个表。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pizza_test.models
{
    public class Pizza
    {

        public int Id { get; set; }
        public string Name { get; set; }
        public float Price { get; set; }
        public string Description { get; set; }
        public int IngredientId { get; set; }
        public virtual IList<Bottom> Bottoms { get; set; }
        public virtual IList<Ingredient> Ingredients { get; set; }

    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pizza_test.models
{
    public class Bottom
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Size { get; set; }
        public virtual Pizza Pizzas { get; set; }
    }
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pizza_test.models
{
    public class Ingredient
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public virtual Pizza Pizzas { get; set; }
    }
}

我的dbcontext代码如下:

namespace pizza_test
{
    using models;
    using System;
    using System.Data.Entity;
    using System.Linq;

    public class PizzaContext : DbContext
    {

        public PizzaContext()
            : base("name=PizzaContext")
        {
        }

        public DbSet<Pizza> Pizza { get; set; }
        public DbSet<Ingredient> Ingredient { get; set; }
        public DbSet<Bottom> Bottom { get; set; }
    }
}

但是当我尝试在program.cs中查询数据库时,我不允许调用item.Ingredients.Name。

class Program
{
    static void Main(string[] args)
    {
        var _context = new PizzaContext();

        var firstPizza = _context.Pizza.Include(p => p.Ingredients).ToList();
        foreach (var item in firstPizza)
        {
            Console.WriteLine(item.Ingredients.Name);
        }
    }
}

这让我有点失落,因为我认为这是ORM的力量。我忘记了什么吗?此外,当我在Visual Studio中调试它时,我可以找到所有相关的成分数据,包括名称,描述和ID。感谢您提供的任何帮助。

0 个答案:

没有答案