0

我正在使用带有 BreezeJs 1.3.5 的 WebAPI V4.0.30506.0(这应该是稳定版本),由于某种原因,当我使用 expand 关键字时我没有得到子实体。如何获取子实体?

这是我的数据模型的精简版。

public class Policy
{
    public int Id { get; set; }
    public string PolicyNumber { get; set; }
    public ICollection<Vehicle> Vehicles { get; set; }
}

public class Vehicle
{
    public int Id { get; set; }
    public string Manufacturer { get; set; }
    public string Model { get; set; }
    public int ModelYear { get; set; }
    public virtual Policy Policy { get; set; }
}

这是我得到的样子:

    var getPolicies = function (policyObservable, getFromServer) {
        if (!getFromServer) {
            var pLocal = getLocal('Policies', 'policyNumber');
            if (pLocal.length > 0 ){
            policyObservable(pLocal);
            return Q.resolve();
            }
        }

         var query = EntityQuery.from('Policies')
            .expand("Vehicles");

        return manager.executeQuery(query)
            .then(querySucceeded)
            .fail(queryFailed);

        // handle the ajax callback
        function querySucceeded(data) {
            if (policyObservable) {
        // I pause here in Chrome
                policyObservable(data.results);
            }
            log('retrieved policy!', data, true);
        }
    };

当我在 Chrome 中查看 querySucceeded 中的 data.results 时,我看到了一系列策略,但没有子车辆。当我签入网络选项卡时,我看到它在调用:

http://localhost/breeze/breeze/Policies?$expand=Vehicles

结果中有车辆。

这是我回来的一个片段:

[ {“$id”:“1”,“$type”:“Eclipse.Model.Policy,Eclipse.Model”,“Id”:1,“PolicyNumber”:“PHHOAP00”,“车辆”:[{“$ id”:“2”,“$type”:“Eclipse.Model.Vehicle,Eclipse.Model”,“Id”:1,“制造商”:“ac”,“Model”:“In”,“ModelYear” : 2006, "政策": { "$ref": "1" },...

编辑:我不确定它是否相关,但是当我在控制台中输入以下内容时,我得到空白数组。

console.log(data.results[0].entityAspect._entityKey.entityType.navigationProperties)
console.log(data.results[0].entityAspect._entityKey.entityType.foreignKeyProperties)
4

2 回答 2

1

Maleki,您是否尝试过在车辆策略中添加外键?Breeze 将需要 FK 来解决实体之间的导航问题,这很可能是导致问题的原因。

于 2013-06-13T23:04:58.410 回答
0

Reverting to the 1.3.4 version of breeze.debug.js fixed the issue.

In my case it appears that in 1.3.5 OData $expand doesn't map properly to the data.results.

于 2013-06-14T03:18:27.187 回答