0

ジャンクション テーブルと多対多の関係があります。

public class Contact
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<ContactContactGroup> ContactContactGroups { get; set; }
}

public class ContactContactGroup
{
    public int Id { get; set; }
    public int ContactId { get; set; }
    public int ContactGroupId { get; set; }

    public virtual Contact Contact { get; set; }
    public virtual ContactGroup ContactGroup { get; set; }
}

public class ContactGroup
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ContactContactGroup> ContactContactGroups { get; set; }
}

リレーションを削除すると、次の例外が発生します。

Uncaught TypeError: Unable to parse bindings.
Bindings value: text: Contact().Name
Message: Cannot read property 'Name' of null

これは私の削除機能です:

   that.deleteMe = function (contactContactGroup) {    

       // Doesn't work also, duplicates entries after second deletion
       //contactGroup.ContactContactGroups.remove(contactContactGroup);

       contactContactGroup.entityAspect.setDeleted();
   };

ここにビューがあります:

  <div data-bind="foreach: ContactContactGroups">
      <div data-bind="text: Contact().Name"></div>
      <button data-bind="click: deleteMe">Delete</button>
  </div>

ノックアウトjsからの「with」バインディングによる回避策を見つけました:

   that.deleteMe = function (contactContactGroup) {    
       contactGroup.ContactContactGroups.remove(contactContactGroup);
       contactContactGroup.entityAspect.setDeleted();
   };

  <div data-bind="foreach: ContactContactGroups">
      <div data-bind="with: Contact">
          <div data-bind="text: Name"></div>
      </div>
      <button data-bind="click: deleteMe">Delete</button>
  </div>

しかし、これは私には少し奇妙に思えます。これはbreezejsのバグですか、それとも何か見逃しましたか?

4

1 に答える 1