我的 EDM 中有两个实体,Application
非常Address
类似于以下内容:
class Application
{
ICollection<Address> Addresses { get; set; }
}
class Address { }
在客户端上,我创建了每个实例并尝试将address
实例添加到Application.addresses
集合中:
var address = addressType.createEntity(...);
var application = applicationType.createEntity(...);
application.addresses.push(address);
不幸的是,我得到一个运行时异常说:“ Unable to get value of the property 'name': object is null or undefined
”。
我将异常跟踪回(v1.2.8)中的checkForDups
函数:breeze.debug.js@9393-9404
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.inverse
是undefined
这样,因此在尝试访问该name
属性时出现错误。
添加一个简单的检查可以解决问题,并允许添加到集合中:
if (!inverseProp) {
return true;
}
因此,在这一切之后,问题是:这是一个错误还是仅仅是 Breeze 不支持一对多单向?