这是我的代码:
[Authorize]
[BreezeController]
public class BreezeController : ApiController
{
private readonly MyRepository _repository;
public BreezeController()
{
_repository = new MyRepository(User);
}
[HttpGet]
public IQueryable<Compound> Compounds(int id)
{
var compounds = new List<Compound>();
compounds.add(new Compound() { Name = "cmp1" });
compounds.add(new Compound() { Name = "cmp2" });
compounds.add(new Compound() { Name = "cmp3" });
return compounds.AsQueryable();
}
}
在客户端,我确实得到了三个化合物,但是,这三个化合物的内容与最后一个(cmp3)相同。为什么呢?
答案 0 :(得分:0)
您已为复合模型定义了一个唯一的ID。如果您有构造函数,则需要确保为这些对象生成Id,或者手动分配它们。
当服务器将对象传递回Breeze客户端时,您的实体管理器并不知道它应该生成ID,除非您告诉它。当它从查询中实现这些实体时,它们都具有相同的Id(可能为null),这是唯一的。 Breeze很可能认为你正在传递同一个对象的三个实例。
在传递它们之前,在服务器上为实体分配Id,或者考虑在客户端创建它们。