Breeze似乎正在创建一个非常大的文件,考虑到我传递它来保存的对象模型。
我只保存一个药物实例,其中1个药物选项包含1个可用路线,而一些文本字段则包含一个单词。
当我从第14705行从debug.breeze.js中获取捆绑包并将其保存到文本文件时,该文件为35+ mb。对于这种直接的对象模型来说,这似乎是一大堆数据。
有没有办法只用物体来减少json?所以我不必改变IIS设置?
******************链接到微风发送到服务器的导出的json ***********
Sample of json that's causing the problem
****************这是图表*************的屏幕截图
我的datacontext.saveChanges代码......
function saveDictionaryChanges(entity) {
var graph = manager.getEntityGraph(entity, 'drugIndications, ' +
'drugOptions, ' +
'drugOptions.concentrations, ' +
'drugOptions.availableRoutes, ' +
'drugOptions.availableDrugForms, ' +
'drugOptions.availableUnits');
// Filter for changes only
graph = graph.filter(function (entity) {
return entity.entityAspect.entityState.isAddedModifiedOrDeleted();
});
return manager.saveChanges(graph)
.then(saveSucceeded, saveFailed);
function saveSucceeded(result) {
//TODO: Commented out because WIP is on the back burner
//zStorage.save();
logSuccess('Saved Data', result, true);
}
function saveFailed(error) {
var msg = config.appErrorPrefix + 'Save failed: ' +
breeze.saveErrorMessageService.getErrorMessage(error);
error.message = msg;
logError(msg, error);
throw error;
}
}
我的对象模型是
还有4种其他遗传可用途径类型为液体,吸入,注射和局部。我只包括了AvailableSolidRoutes来帮助缩短他的问题。
public class AvailableRoute {
public int Id { get; set; }
public int DrugOptionId { get; set; }
public int RouteId { get; set; }
public virtual Route Route { get; set; }
}
public class AvailableSolidRoute : AvailableRoute {
public AvailableSolidRoute( ) { }
}
还有吸入,注射和吸入;从浓度中继承的局部浓缩物。我只提供LiquidConcentration来帮助缩短问题。
public abstract class Concentration {
public int Id { get; set; }
public int DrugOptionId { get; set; }
public DrugOption DrugOption { get; set; }
public decimal Measure{ get; set; }
public int MassUnitId { get; set; }
public virtual Unit MassUnit { get; set; }
public int VolumeUnitId { get; set; }
public virtual Unit VolumeUnit { get; set; }
public int? DrugFormId { get; set; }
public virtual DrugForm DrugForm { get; set; }
public int DisplayOrder { get; set; }
}
public class LiquidConcentration : Concentration {
public LiquidConcentration( ) {}
}
其他4种继承类型,如固体选项Liquid,Inhalation,Injectable&局部
public class DrugOption {
public int Id { get; set; }
public int DrugId { get; set; }
public Drug Drug { get; set; }
public List<AvailableDrugForm> AvailableDrugForms { get; set; }
public List<AvailableRoute> AvailableRoutes{ get; set; }
public List<AvailableUnit> AvailableUnits { get; set; }
public List<Concentration> Concentrations { get; set; }
public string SpecialInstructions { get; set; }
}
public class SolidOption : DrugOption {
public SolidOption( ) { }
}
Drug是以前所有类所涉及的根类:
public class Drug {
public int Id { get; set; }
public string Name { get; set; }
public string Alias{ get; set; }
public string Directions { get; set; }
public bool DirectionsIsEditable { get; set; }
public string SpecialDirections { get; set; }
public bool SpecialDirectionsIsEditable { get; set; }
public int? DisplayOrder { get; set; }
public IList<DrugIndication> DrugIndications { get; set; }
public IList<DrugOption> DrugOptions { get; set; }
public Drug( ) { }
}
答案 0 :(得分:0)
*****************我解决了这个问题(自我诱导嘿嘿!)*************
因此,为了更容易将我的“DrugOptions”绑定到UI。我建立
针对每种药物选择的药物的客户属性。
我不明白这段代码到底在做什么..我添加它认为它会 在将实体更改发送到breeze之前删除clientside属性。这不是它的目的。
正确的微风对于客户端属性感到困惑,因为它不了解它们。
if (changedProp === 'solidOption') {
delete changeArgs.entity.entityAspect.originalValues[changedProp];
}
我将这些属性移动到Controller,现在完全没问题了:)