当我遇到一个奇怪的情况时,我正试图探索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。感谢您提供的任何帮助。