使用下面的代码我遇到的问题是,并非所有列都是data.results数组中的返回数据。例如,如果第1行的数据库中col4为null,则data.results [0]不包含col4的元素,但第2行有值,则data.results [1]将包含col4的值。我希望数组中的每个返回项包含具有数据库值的所有项或null。如果无法返回null,那么空字符串就可以了。
var query = new breeze.EntityQuery()
.from('mytable')
.where('col1', 'substringof', '2')
.select('col1,col2,col3,col4')
.orderBy('col1')
.take(200);
return _manager
.executeQuery(query)
.then(function (data) {
return data.results;
})
.fail(queryFailed);
}
答案 0 :(得分:0)
默认情况下,breeze不会在其JSON结果中序列化空值。这是减少电线上微风有效载荷的有意选择。并且..这通常不是返回“实体”的查询的问题。即存在微风元数据的数据。因为已在此类实体上定义了属性。
但是,如果您按原样返回匿名结果,那么这可能是个问题。显然,您可以解决它,因为您知道要请求的属性,并且如果它们不在结果中,则可以在查询后更新它们。
但您也可以通过“BreezeConfig”类更改breeze的默认配置以适应这种情况。
BreezeConfig支持自定义支持Web API中与Breeze相关的操作的组件。 BreezeConfig定义默认行为;您可以通过从中导出并覆盖其虚拟方法来替换您自己的行为。 Breeze.NET将在您的项目引用的程序集中发现您的子类,并使用它而不是BreezeConfig。
使用BreezeConfig配置具有特定设置的Json.Net序列化程序。您可以通过编写BreezeConfig的子类来替换这些设置,该子类覆盖'CreateJsonSerializerSettings'方法,如下例所示:
public class CustomBreezeConfig : Breeze.WebApi.BreezeConfig {
protected override JsonSerializerSettings CreateJsonSerializerSettings() {
var baseSettings = base.CreateJsonSerializerSettings();
baseSettings.NullValueHandling = NullValueHandling.Include;
return baseSettings;
}
希望这有帮助。