List je jeho položky - položka znalá svého listu   zodpovězená otázka

Entity Framework, WPF

Zdravím..

Celkem bych uvítal možnost mít v objektu property která by ukazovala na list, ve kterém se objekt nachází.. Vlastně taková N:1 vazba tak jak to funguje v EF

class House
{
 public IList<Room> Rooms { get; set; }
}


class Room
{
  public House OnHouse { get; set; }
}

Takže by to mělo fungovat tak, že OnHouse vždycky bude ten barák, který má ve své proměnné Rooms uložený kýžený pokoj...Prostě N:1 vazba..

No a samozřejmě aby fungovalo to, že když změním OnHouse, tak se z Rooms patřičných baráku odebere a přidá kýžený pokoj...

Jde to nějak čistě dostáhnout?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To není obecně tak jednoduché.

Pokud to potřebujeme měnit pouze jedním směrem (vlastností OnHouse) a dále zajistíte, že metody AddRoomInternal a RemoveRoomInternal nebudou volány nikde jinde než ze setru vlastnosti OnHouse, tak by to šlo nějak takhle:

public class House
{
  private readonly IList<Room> m_Rooms = new List<Room>();
  
  public IList<Room> Rooms
  {
    get { return m_Rooms.AsReadOnly(); }
  }

  internal void AddRoomInternal(Room room)
  {
     m_Rooms.Add(room);
  }

  internal void RemoveRoomInternal(Room room)
  {
     m_Rooms.Remove(room);
  }
}
 
public class Room
{
  private House m_OnHouse;

  public House OnHouse 
  {
    get { return m_OnHouse }
    set
    {
      if (m_OnHouse != value)
      {
        if (m_OnHouse != null)
        {
          m_OnHouse.RemoveRoomInternal(this);
        }
        m_OnHouse = value;
        if (m_OnHouse != null)
        {
          m_OnHouse.AddRoomInternal(this);
        }
      }
    }
  }
}
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback