簡體   English   中英

Breeze.js 1.4.1屬性未定義不為null

[英]Breeze.js 1.4.1 properties undefined not null

根據Breeze支持的建議,我已升級到1.4.1,但存在以下問題。 以前,已定義新創建實體的導航屬性,但可觀察到值為空的敲除。 我修改了Breezejs TODO應用程序以顯示此內容。

我的數據模型在下面,前端代碼在這里:

function reproduce() {
  breeze.NamingConvention.camelCase.setAsDefault();
  var manager = new breeze.EntityManager(serviceName);
  manager.fetchMetadata().then(function () {
    var parent = manager.createEntity('Parent');
    console.log('otherProperty ' + parent.otherProperty());
    console.log('childOne ' + parent.childOne());
    // I cannot call parent.childrenTwo() since childrenTwois undefined
    console.log('childrenTwo ' + parent.childrenTwo);
  });
}

問題在於,在微風的早期版本中,屬性otherProperty和childOne將是具有空值的可觀察到的敲除,而屬性childrenTwo將是一個可觀察的空數組。 但是,正如我在控制台中看到的那樣,所有三個屬性都未定義? 這是故意的嗎?

我當然可以自己定義它們,但這是很多工作,我希望微風可以為我做。 同樣根據Breeze的文檔,“很少有理由定義已經在元數據中描述的屬性。” http://www.breezejs.com/documentation/extending-entities

更新1:

感謝Jay Traband,在我的復制應用程序中,我沒有正確設置外殼。 但是childrenTwo仍未定義,我相信它應該是一個可觀察的數組。 我的生產應用程序確實設置了大小寫,因此我必須對此進行重新調查。

更新2:

再次感謝Jay Traband,我發現微風的metastore不了解ChildTwo類型。 因此,似乎我沒有以某種方式進行注冊? 我對Java Hibernate比對實體框架更熟悉。 下面的數據模型中缺少什么嗎?

更新3:

ChildTwo沒有顯式的外鍵,我補充說,它可以正常工作。 我想我真的需要深信Breeze需要一個明確的外鍵。

public class ChildTwo
{
  [Key]
  public int Id { get; set; }

  public int ParentId { get; set; }

  [ForeignKey("ParentId")]
  public Parent Parent { get; set; }
}

數據模型。

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Todo.Models
{
  public class Parent
  {
    public Parent()
    {
      ChildrenTwo = new List<ChildTwo>();
    }
    [Key]
    public int Id { get; set; }

    [Required]
    public string OtherProperty { get; set; }

    [Required]
    public ChildOne ChildOne { get; set; }

    [Required]
    public IList<ChildTwo> ChildrenTwo { get; set; }
  }
  public class ChildOne
  {
    [Key]
    [ForeignKey("Parent")]
    public int Id { get; set; }

    public Parent Parent { get; set; }
  }
  public class ChildTwo
  {
    [Key]
    public int Id { get; set; }

    public Parent Parent { get; set; }
  }
} 

我只是做了一些簡單的測試,無法對此進行復制。 在調用createEntity之后,在所有測試中,我都將實體的導航屬性視為可剔除的可觀察對象。 一些想法;

您確定您不會無意中

  • 使用backingStore骨干模型庫而不是淘汰賽 通過breeze.config.initializeAdapter
  • 對屬性應用不同的大小寫,即通過使用breeze.NamingConvention

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM