Używam NHibernate i mam problemy z tym zapytaniem ... Mam element klasy, który chcę pobrać przy użyciu jego identyfikatora. Wszystko w porządku. Jednak chcę również, aby właściwość bool w klasie Item miała wartość true, jeśli zostanie ustawiony inny warunek. W szczególności ta właściwość nosi nazwę IsMarked, informując, czy element jest oznaczony/patrzy/oznaczony dla użytkownika, który o to poprosił, i ta informacja jest ustawiona w tabeli, która podaje relację między przedmiotem a użytkownikiem.Ustawienie wartości na podstawie innej tabeli w kwerendzie NHibernate
Obecnie pobieram przedmiot, a następnie znajduję odniesienie - aktualizując właściwość na wartość true, jeśli można znaleźć odniesienie. Czy mogę to zrobić w jednym zapytaniu?
var item = Session.Get<Item>(itemId);
var flaggedResult = Session.CreateCriteria<ItemWithUserFlag>()
.Add(Restrictions.Eq("User.Id", userId))
.Add(Restrictions.Eq("Item", item))
.List<ItemWithUserFlag>();
if (flaggedResult.Count > 0)
item.IsMarked = true;
return item;
Jak twoje zajęcia odwzorowany? Czy istnieje wiele powiązań między użytkownikiem a przedmiotem? –
Używam Fluent do mapowania. Istnieje relacja wiele do wielu reprezentowana w oddzielnej klasie ItemWithUserFlag. Użytkownik nie ma bezpośredniego związku z Przedmiotem, a Przedmiot nie ma bezpośredniego związku z Użytkownikiem. ItemWithUserFlag ma References ustawione na User i Item. – stiank81