Breeze在刷新时复制数据

时间:2016-07-06 17:41:00

标签: angularjs breeze

我正在开发一个使用GUID作为主键类型的项目,我也在客户端使用breeze和angular。问题是当我尝试在客户端更新数据时,接收到的数据会被添加到旧数据中,但我想刷新数据。我使用代码优先处理来为breeze.js生成元数据 这是我的模型类的一部分:

public class Peripherals
{
    public Guid PeripheralId { get; set; }
    public string Name { get; set; }
    public string IpAddress { get; set; }

这是刷新数据的函数:

  function getAll(forceRemote, page, size, nameFilter) {
        var self = this;
        // Only return a page worth of devices
        var take = size || 20;
        var skip = page ? (page - 1) * size : 0;

        if (self._areItemsLoaded() && !forceRemote) {
            // Get the page of devices from local cache
            return self.$q.when(getByPage());
        }

        // Load all devices to cache via remote query
        return EntityQuery.from('Devices')               
            .orderBy(orderBy)
            .toType(entityName)
            .using(self.manager).execute()
            .then(querySucceeded)
            .catch(self._queryFailed);


        function querySucceeded(data) {
            self._areItemsLoaded(true);
            self.log('Retrieved [Devices] from remote data source', data.results.length, true);
            return getByPage();
        }

        function getByPage() {
            var predicate = null;

            if (nameFilter) {
                predicate = _devicePredicate(nameFilter);
            }

            var devices = EntityQuery.from(entityName)
                .where(predicate)
                .orderBy(orderBy)
                .toType(entityName)
                .take(take).skip(skip)
                .using(self.manager)
                .executeLocally();

            return devices;
        }
    }

GUID类型有问题吗?或者什么?

1 个答案:

答案 0 :(得分:0)

您需要确保同一记录的guid始终相同。 您还应该将主键设置为在实体的元数据上计算