BreezeController返回动态创建的错误对象?

时间:2014-03-15 21:37:52

标签: breeze

这是我的代码:

[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)相同。为什么呢?

1 个答案:

答案 0 :(得分:0)

您已为复合模型定义了一个唯一的ID。如果您有构造函数,则需要确保为这些对象生成Id,或者手动分配它们。

当服务器将对象传递回Breeze客户端时,您的实体管理器并不知道它应该生成ID,除非您告诉它。当它从查询中实现这些实体时,它们都具有相同的Id(可能为null),这是唯一的。 Breeze很可能认为你正在传递同一个对象的三个实例。

在传递它们之前,在服务器上为实体分配Id,或者考虑在客户端创建它们。