情况是breeze的expand函数不会返回任何实体。
背景: 使用没有合适驱动程序的遗留数据库,仅用于ef 5.因此,首先使用db。 Breeze版本是1.4.8 EF版本是5.0.0
什么有效: 从LinqPad开始,include()可以工作,一切都按照应有的方式返回。
Invoicings.Take(10).Include("MyInvoice").AsNoTracking()
AsNoTracking()存在,否则会返回错误:
属于对象键的属性的值不匹配 ObjectContext中存储的相应属性值。这个 如果属于键的属性返回不一致,则可能发生 或不正确的值或更改后未调用DetectChanges 属于作为钥匙一部分的财产。
Controller(api)以这种方式提供Invoicings功能:
[HttpGet]
public IQueryable<Invoicing> Invoicings()
{
return _repository.Invoicings.AsNoTracking();
}
使用上面的api,下面的odata-query从关联MyInvoice返回null。这也是Breeze称之为web api的方式。
localhost..Invoicings $滤波器= SubsetLinkToPerson%20当量%2012345米&安培; $扩大= MyInvoice
但是当我将api函数的修饰更改为:
[HttpGet, Queryable]
然后上面的odata-query很好地检索并填充MyInvoice关联。但这仍然无助于Breeze。它只是表明服务器端具有用于odata工作的密钥和关联。
有没有办法让这项工作成为Breeze方式?