gpt4 book ai didi

Breeze .js : adding an element to a navigation property collection without inverse rel raises an exception [Unable to get value of the property 'name' ]

转载 作者:行者123 更新时间:2023-12-02 02:04:09 24 4
gpt4 key购买 nike

我的 EDM 中有两个实体,ApplicationAddress 非常类似于以下内容:

class Application
{
ICollection<Address> Addresses { get; set; }
}

class Address { }

在客户端,我为每个实例创建了一个实例,并尝试将 address 实例添加到 Application.addresses 集合中:

var address = addressType.createEntity(...);
var application = applicationType.createEntity(...);

application.addresses.push(address);

不幸的是,我收到运行时异常:“无法获取属性‘name’的值:对象为 null 或未定义”。

我将异常追溯到 breeze.debug.js@9393-9404 (v1.2.8) 中的 checkForDups 函数:

function checkForDups(relationArray, adds) {
// don't allow dups in this array. - also prevents recursion
var inverseProp = relationArray.navigationProperty.inverse;
var goodAdds = adds.filter(function(a) {
if (relationArray._addsInProcess.indexOf(a) >= 0) {
return false;
}
var inverseValue = a.getProperty(inverseProp.name);
return inverseValue != relationArray.parentEntity;
});
return goodAdds;
}

碰巧,我的实体处于一对多的单向关系中(没有反向导航属性);结果在运行时 relationArray.navigationProperty.inverseundefined,因此在尝试访问 name 属性时出现错误。

添加一个简单的检查解决了问题,并允许添加到集合中:

if (!inverseProp) {
return true;
}

所以毕竟问题是:这是一个错误还是仅仅是 Breeze 不支持一对多单向?

最佳答案

编辑从现在可用的 v Breeze 1.3.5(2013 年 6 月 4 日)开始,此问题已得到修复。


编辑:好的,这是一个错误,但我无法修复当前版本。我将尝试在下一个版本中获取它。

您建议的修复是个好主意,但实际上只是隐藏了问题。

真正的问题是,对于我们在 1->n 方向(即不在 n->1 方向)的单向导航,breeze 没有足够的元数据。因此,导航集合中的重复实体检查将不起作用,子项到父项的自动连接也将丢失。

在我们得到修复之前,最简单的解决方法是简单地使其成为双向导航。请注意,另一个方向的单向导航效果很好。


这可能是一个错误

我们的 DocCode 示例项目中确实有一个在 OrderDetails 和 Products 之间进行单向导航的示例。但在这种情况下,我们允许从 OrderDetail -> Product (1-1) 导航,但不允许从 Product -> OrderDetails (1-n) 导航。

您的情况似乎相反,即允许 1-n 但不允许相应的 1-1。我将创建一些测试,如果我可以重现,它将在下一个版本中修复。

发生这种情况时,我会发回这里。 (感谢找到它:)

关于 Breeze .js : adding an element to a navigation property collection without inverse rel raises an exception [Unable to get value of the property 'name' ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com