BreezeController控制器问题

时间:2013-11-20 20:45:26

标签: entity-framework lazy-loading breeze

我有一个简单的BreezeController,它返回一个工作存储库对象单元。该对象是以下类的DbSet实体对象:

    public int OrderId { get; set; }
    public string Customer { get; set; }
    public virtual ICollection<OrderLine> OrderLines { get; set; }

工作单元课程如下:

private readonly EFContextProvider<ESpaDBEntities> _contextProvider;

    public UoW()
    {
        _contextProvider = new EFContextProvider<ESpaDBEntities>();
        Orders = new Repository<Order>(_contextProvider.Context);
        OrderLine = new Repository<OrderLine>(_contextProvider.Context);
        Products = new Repository<Product>(_contextProvider.Context);

    }

    public IRepository<Order> Orders { get; set; }
    public IRepository<OrderLine> OrderLine { get; set; }
    public IRepository<Product> Products { get; set; }

    public SaveResult Commit(JObject changeSet)
    {
        return _contextProvider.SaveChanges(changeSet);
    }

BreezeController操作如下:

[HttpGet]
    public IQueryable<Order> Orders()
    {
        return uow.Orders.All();
    }

当我从浏览器访问此方法时,将返回以下Json对象:

$id: "1",$type: "KoDurandalBreeze.DomainModel.Order, KoDurandalBreeze",OrderId: 1,Customer: "Bob",OrderLines: [ ]

无论出于何种原因,即使指定了虚拟,也不会填充订单。有没有人知道为什么JSON对象不包含任何OrderLine对象?

1 个答案:

答案 0 :(得分:0)

您需要在服务器上执行等效的EF'Intelude',或者如果这是EF Queryable,您可以在客户端EntityQuery上调用'extend',即

  var query = EntityQuery.from("Orders").expand("OrderDetails");
  var myEntityManager.executeQuery(query).then(...)