我开始将breezejs用于带有Web API 2.1后端的项目。我有一个名为Country的实体,它具有一个名为Continent的实体的外键/导航属性。 我想使用这些国家作为查找值,但我也需要他们与各大洲的关系,所以我也想获取这些信息。
public class Country
{
public string Iso { get; set; }
public string Name { get; set; }
public virtual Continent Continent { get; set; }
}
我还有一个名为continent的FK字段,但我没有在代码中使用它。
目前后端控制器如下所示:
[HttpGet]
public object Lookups() {
var countries = _breezeRepository.Get<Country>().Include(it=>it.continent);
//more lookups in here
return new { countries };
}
根据breeze samples我正在返回一个匿名的实体对象(我还有几个但是从上面删除它们以避免混淆)。
在前端,我有一个查找存储库(由John Papa的Building Apps with Angular and Breeze - Part 2演示):
function setLookups() {
this.lookupCachedData = {
countries: this._getAllLocal(entityNames.country, 'name'),
};
}
问题是虽然发送的JSON包含各大洲的值,但 countries对象不包含值或导航属性。 我也尝试将各大洲作为单独的查找,并尝试通过breeze元数据扩展连接它们,就像我用连接查找实体一样但无济于事。
答案 0 :(得分:1)
我还有一个名为continent的FK字段,但我不会在代码中使用它。
正如here所解释的那样可能是问题。
我会尝试以下方法:
确保在域模型中明确定义了Continent FK。例如:
public class Country
{
public string Iso { get; set; }
public string Name { get; set; }
public string ContinentIso { get; set; }
public virtual Continent Continent { get; set; }
}
此外,在您的控制器中,不仅返回国家/地区列表,还返回各大洲列表;微风会使绑定。 (不确定你的Include
是否有必要)。
[HttpGet]
public object Lookups() {
var countries = _breezeRepository.Get<Country>();
var countinents = _breezeRepository.Get<Continent>();
//more lookups in here
return new { countries, continents };
}