我一直试图让这个工作相当长一段时间但仍然没有成功......
我有以下型号:
public class Master
{
[Key]
public int Id { get; set; }
public int UserId { get; set; }
public int Month { get; set; }
public int Year { get; set; }
public int Version { get; set; }
public ICollection<Detail> DetailsList { get; set; }
}
public class Detail
{
[Key]
public int Id { get; set; }
public string Description { get; set; }
public decimal Amount { get; set; }
public string Notes { get; set; }
}
我的控制器看起来像这样:
...
[HttpGet]
public string Metadata()
{
return _contextProvider.Metadata();
}
[HttpGet]
public IQueryable<Master> Masters()
{
return _contextProvider.Context.Masters.Include("DetailsList");
}
...
在客户端,我有这样的查询:
...
var query = EntityQuery.from('Masters').expand("DetailsList");
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
var master = data.results[0];
if (masterObservable) {
masterObservable(master);
}
}
...
我遇到的问题是主对象中不存在DetailsList属性,即使我可以在从服务器返回的JSON中看到它。 如果我在breeze.DataService中设置hasServerMetadata:true,则该对象将具有该属性,但显然它不再使用元数据。 这段代码曾经在1.1.3版本中运行得很好但是由于我升级到1.4.0它不再有效。我也试过1.4.1而没有运气。 我假设它与元数据有关,但我无法弄清楚我错过了什么让它再次运作。
答案 0 :(得分:0)
您必须在Detail实体中定义外键,因为Breeze关联需要外键:
public class Detail
{
[Key]
public int Id { get; set; }
public string Description { get; set; }
public decimal Amount { get; set; }
public string Notes { get; set; }
public int MasterId { get; set; }
public Master Master { get; set; }
}
您可以在http://www.breezejs.com/documentation/navigation-properties找到有关关联的其他信息。