我一直在構建我的第一個SPA應用程序,從John Papa的快速啓動中跳出了偉大的工作。可能不會設置收藏導航屬性
我遇到的問題是,當我嘗試通過微風執行展開操作時,或者只是選擇所有的字段時,在我的子集合映射過程中,我遇到了來自Breeze的問題。 newValue.entityAspect是undefined
如果我通過select子句通過我的api查詢,一切都很好,如果我直接調用表'位置',我會在chartVal對象上得到導航錯誤。
var query = EntityQuery.from('Positions')
//.select('id, endDate, gauge, hoursPerWeek, memberId, title, summary, startDate, totalHours, weightedHours, company, compensation')
.where('memberId', '==', id)
.expand('Company, ChartVals')
.orderBy(orderBy.positions);
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
var list = partialMapper.mapDtosToEntities(manager, data.results, entityNames.position, 'id');
if (observables) {
observables(list);
}
上面的查詢會成功,然後對MapDtosToEntities通話(約翰·帕帕提供)
功能mapDtosToEntities(經理,DTOS,的entityName,註冊表,extendWith){ 回報DTOS .MAP(dtoToEntityMapper);
function dtoToEntityMapper(dto) {
var keyValue = dto[keyName];
var entity = manager.getEntityByKey(entityName, keyValue);
if (!entity) {
// We don't have it, so create it as a partial
extendWith = $.extend({ }, extendWith || defaultExtension);
extendWith[keyName] = keyValue;
entity = manager.createEntity(entityName, extendWith);
}
mapToEntity(entity, dto);
entity.entityAspect.setUnchanged();
return entity;
}
function mapToEntity(entity, dto) {
// entity is an object with observables
// dto is from json
for (var prop in dto) {
if (dto.hasOwnProperty(prop) && prop !="entityAspect") {
entity[prop](dto[prop]); <-- tanks here on children
}
}
return entity;
}
}
/// <summary>
/// TODO: Update summary.
/// </summary>
public class Position : PersistableObject
{
public int CompanyId { get; set; }
/// <summary>
/// Weighted hours based on Half-Life.
/// </summary>
public int CreditMinutes { get; set; }
public int? CompensationId { get; set; }
public DateTime? EndDate { get; set; }
/// <summary>
/// Code to hold measure of completeness. 10 = complete 0 = not complete.
/// </summary>
public int Gauge { get; set; }
public int? HoursPerWeek { get; set; }
public bool IsCurrent { get; set; }
[StringLength(40)]
public string LinkedInId { get; set; }
[Required]
public int MemberId { get; set; }
[StringLength(40)]
public string Title { get; set; }
[StringLength(400)]
public string WeightedWords { get; set; }
/// <summary>
/// Adjusted Experience score Based on half life
/// </summary>
public int Score { get; set; }
[Required]
[StringLength(2000)]
public string Summary { get; set; }
public DateTime StartDate { get; set; }
public decimal? SalaryEnd { get; set; }
/// <summary>
/// Hourly salary - let users enter hourly, monthly, annual etc
/// </summary>
public decimal? SalaryStart { get; set; }
public decimal TotalHours { get; set; }
/// <summary>
/// Total Man-hours Multiplied by Gauge reading
/// </summary>
public decimal WeightedHours { get; set; }
public int VisibilityId { get; set; }
public Company Company { get; set; }
public Member Member { get; set; }
public virtual Compensation Compensation { get; set; }
public virtual ICollection<Project> Projects { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
public virtual ICollection<ChartVal> ChartVals { get; set; }
}
public class ChartVal : PersistableObject
{
[Required]
[StringLength(40)]
public string Key { get; set; }
public double Value { get; set; }
public string Percentage { get; set; }
public int PositionId { get; set; }
public virtual Position Position { get; set; }
}
感謝您花點時間檢查我的問題。我感謝你的時間!