Javascript Breezejs实体、敲除绑定、空导航属性
我知道我在做一些愚蠢的事情,但我希望有一些Breezejs经验的人能帮助我,因为我是新手。因此,问题是当我执行breeze manager.save时,会更改导航属性,并且只有导航属性不会发送到服务器。在我的模型中,所有导航属性都只是查找项(如果这有什么区别的话),我使用knockout进行绑定。下面是一个屏幕截图,显示了问题所在:- my dataservice中的相关位只执行以下操作:-Javascript Breezejs实体、敲除绑定、空导航属性,javascript,asp.net-mvc,entity-framework,knockout.js,breeze,Javascript,Asp.net Mvc,Entity Framework,Knockout.js,Breeze,我知道我在做一些愚蠢的事情,但我希望有一些Breezejs经验的人能帮助我,因为我是新手。因此,问题是当我执行breeze manager.save时,会更改导航属性,并且只有导航属性不会发送到服务器。在我的模型中,所有导航属性都只是查找项(如果这有什么区别的话),我使用knockout进行绑定。下面是一个屏幕截图,显示了问题所在:- my dataservice中的相关位只执行以下操作:- function createAssessment() { ret
function createAssessment() {
return manager.createEntity('VulnerabilityAssessment');
}
域模型:-
public class VulnerabilityAssessment
{
public int Id { get; set; }
public virtual AssessmentStatus Status { get; set; }
public virtual PupilRecord Pupil { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string LatestContact { get; set; }
public string Referrer { get; set; }
public virtual ReferralReason ReasonForReferral { get; set; }
public string SingleResponsibleAdult { get; set; }
public string CurrentIssues { get; set; }
public virtual ReferralSupport PrimaryReferralSupport { get; set; }
public virtual ReferralSupport SecondaryReferralSupport { get; set; }
public bool LikelyToLeaveWithoutQualification { get; set; }
public virtual Destination MovingOnDestination { get; set; }
public virtual Destination DestinationAfterOneMonth { get; set; }
public virtual Destination DestinationAfterSixMonths { get; set; }
public virtual Destination DestinationAfterTwelveMonths { get; set; }
public virtual ProtectedCharacteristic ProtectedCharacteristic { get; set; }
public string Undisclosed { get; set; }
}
这是我的viewmodel:-
define(['services/logger', 'services/dataservice'], function (logger, dataservice) {
var title = 'Vulnerability Assessment';
this.activate = function activate() {
var initialData = dataservice.getAssessmentLookups()
.then(function (data) {
vm.referralReasonCodes(data.referralReasonCodes);
vm.referralSupportCodes(data.referralSupportCodes);
vm.assessmentStatusCodes(data.assessmentStatusCodes);
vm.destinations(data.destinations);
vm.protectedCharacteristics(data.protectedCharacteristics);
vm.assessment(dataservice.createAssessment());
console.log('assessment: %A', vm.assessment());
})
.done();
logger.log(title, null, title, true);
return initialData;
}
this.save = function () {
console.log('in save: %A', vm.assessment());
dataservice.saveChanges();
}
var vm = {
activate: this.activate,
title: title,
referralReasonCodes: ko.observableArray(),
referralSupportCodes: ko.observableArray(),
assessmentStatusCodes: ko.observableArray(),
destinations: ko.observableArray(),
protectedCharacteristics: ko.observableArray(),
assessment: ko.observable(),
save: this.save
};
return vm;
})
查看/HTML:-
<select id="reason-for-referral" class="form-control input-md" data-bind="options: $root.referralReasonCodes, optionsText: 'description', value: $data.reasonForReferral"></select>
注意:上面的select元素位于另一个div中,如下所示:-
<div class="row" data-bind="with: assessment">
在将对象发送到服务器之前,请看一下我的对象。
现在完全被卡住了。。。
非常感谢您的关注。除非修改、添加或删除相关实体,否则Breeze不会通过保存中的导航属性发送可用的相关实体。这是在没有任何参数的情况下调用EntityManager.saveChanges时的默认行为。这样做的原因是,我们不希望发送任何实际上没有更改的数据 另一方面,如果调用EntityManager.saveChanges并传入实体列表,则需要将要发送到服务器的任何相关实体包括在列表中
如果没有,那么为什么要在saveChanges调用中将未更改的实体发送到服务器?我错过什么了吗 嗨@jay,谢谢你看这篇文章,结果是我犯了很多错误,但是读了你的文章确实帮助我重新评估了我想做的事情。谢谢你的帮助。p、 爱你在IdeaBrade.com上的工作