restful c#page无法正确显示

时间:2017-10-07 19:43:56

标签: c# entity-framework asp.net-web-api

我有一个控制器:

public IEnumerable<Food> Get()
{
    FoodDiaryContext cs = new FoodDiaryContext();
    var foodquery = cs.Foods.OrderByDescending(c => c.Description).ToList();

    return foodquery;
}

应显示:

{
    id:1
    description:food
    measure:[]
}

但是我收到了一个错误:

  

输入数据合约名称为“Food_219DB877F13A4776536ADFD2AC86DB1FDBF0E8887DB7E9D658EFE7D9462C3BD5:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies”的'System.Data.Entity.DynamicProxies.Food_219DB877F13A4776536ADFD2AC86DB1FDBF0E8887DB7E9D658EFE7D9462C3BD5'。如果您正在使用DataContractSerializer或者将任何静态未知的类型添加到已知类型列表中,请考虑使用DataContractResolver - 例如,使用KnownTypeAttribute属性或将它们添加到传递给序列化程序的已知类型列表中。

public class Food
{
    public Food()
    {
        Measures = new List<Measure>();
    }

    public int Id { get; set; }
    public string Description { get; set; }
    public virtual ICollection<Measure> Measures { get; set; }
}

public class Measure
{
    public int Id { get; set; }
    public string Description { get; set; }
    public double Calories { get; set; }
    public double Fats { get; set; }
    public double Protein { get; set; }
    public double Carbohydrates { get; set; }
    public virtual Food Food { get; set; }
}

有谁能告诉我我做错了什么?

由于

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。 我确实希望你建议并且有效。

public class FoodDiaryContext:DbContext
    {
        public FoodDiaryContext()
        {
            this.Configuration.ProxyCreationEnabled = false;
        }

        public DbSet<Food> Foods { get; set; }
        public DbSet<Measure> Measures { get; set; }
    }