Właśnie się zastanawiałem nad niektórymi CodeWarning (ConstructorsShouldNotCallBaseClassVirtualMethods), a jeśli istnieje lepszy sposób to zrobić. Mam proste klasy kolekcjonowania dziennika i używam NHibernate do pobierania niektórych obiektów.Nhibernate - Inicjuj listy - najlepsze praktyki?
Czasami samodzielnie tworzę obiekty i dodam je do NHibernate w celu zachowania równowagi. Jaki jest najlepszy sposób, aby upewnić się, że listy nigdy nie są NULL.
Obecnie robię to, ale nie wydaje się "idealne". Masz pomysł na ten temat?
public class LogRun
{
public virtual int Id { get; private set; }
public virtual DateTime StartTime { get; set; }
public virtual DateTime EndTime { get; set; }
public virtual IList<Log> LogMessages { get; set; }
public virtual int LogMessageCount { get { return LogMessages.Count; } }
public LogRun()
{
LogMessages = new List<Log>();
}
}
śledzę ten sam wzór z wyjątkiem zrobić całe inicjalizacji w konstruktorze. Ponadto zazwyczaj konieczne jest ustawienie odwołania do elementu nadrzędnego w metodzie dodawania, np. LogMessages.Add (log); log.LogRun = this; –
Poszedłem o krok dalej i sprawiłem, że mój getter zwróci wersję tylko do odczytu ... return logMessages.ToList() .AsReadOnly(); –
Webjedi
Jamie Ide: Prawda, jeśli jest to jeden-wielu z rodzicem, to ten pomocnik jest świetnym miejscem do ustawienia. Jeśli jest to wiele dla wielu, to nie ma rodzica. Nie jestem pewien w kontekście, ale podejrzewam, że masz rację. Webjedi, podoba mi się również Twoje podejście. Dlatego znalazłem się w Enumerable. W moim przypadku spełnił on wszystko, co chciałem zrobić z kolekcją. – Ben