0

我有一个 web api,它有一种获取产品的方法。产品属于一个类别。现在解决问题,当我调用 api 时,它返回产品的 json 对象,但产品似乎没有它们所属的类别。我也尝试在浏览器上使用 OData 扩展,但没有发生任何不同关于 json 和发送到数据库的查询。

下面的代码是我的api方法。

public IQueryable<Product> Get()
{
    var store = new DatabaseContext();

    return store.Products;
}

产品类别

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public int CatId { get; set; }

    public virtual Category Category { get; set; }
}

类别类

public class Category
{
    public int CategoryId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Product> Products { get; set; }

}

数据库映射

   public class ProductConfig : EntityTypeConfiguration<Product>
{
    public ProductConfig()
    {
        HasKey(m => m.ProductId)
            .Property(m => m.ProductId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        HasRequired(m => m.Category)
            .WithMany(m => m.Products)
            .HasForeignKey(m => m.CatId);
    }
}

public class CategoryConfig : EntityTypeConfiguration<Category>
{
    public CategoryConfig()
    {
        HasKey(m => m.CategoryId)
            .Property(m => m.CategoryId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    }
}    

浏览器上的 JSON 结果

[
  {
    ProductId: 2,
    Name: "Malva Pudding",
    CatId: 1,
    Category: null
  },
  {
    ProductId: 3,
    Name: "Ultra mel",
    CatId: 1,
    Category: null
  }
]
4

2 回答 2

0

它表明 OData 模型构建器仅使用 Product 类和其中的注释。OData 缺乏流畅的映射

于 2015-01-13T00:58:20.207 回答
0

您是否使用了正确版本的 Web Api OData?我认为您在使用版本 4 时会出现这种行为...尝试在以下位置更新您的包: Microsoft.AspNet.WebApi.OData

于 2013-08-29T01:25:52.853 回答