Mam 3 pola: urlName
, displayName
i active
. To jest sprawdzanie rekordu edycji. Co chcę tutaj zrobić, to sprawdzić, czy UrlName
jest unikalny w Db, ale w tym samym czasie, jeśli użytkownik zapisał już adres URL, ale zmieniono DisplayName
i Active
, wówczas rekord powinien zostać zaktualizowany.Problem z zapytaniem LINQ. Konieczność sprawdzenia, czy istnieje
Ktoś mi powie, jak to rozwiązać.
public bool NothingExceptUrlNameExists(string urlName, string displayName, bool active)
{
return (from p in _db.SubMenus
where p.UrlName == urlName && (p.DisplayName != displayName || p.DisplayName == displayName) && (p.Active != active || p.Active == active)
select p).Any();
}
aktualizując rekord jak
TryUpdateModel(existingMenu);
_menu.Add();
To jest to, co chcę osiągnąć
Moje inne 2 wartości powinny być dodane w Query DisplayName i aktywny. Załóżmy, że "UrlName" kontaktu już w DB. Ładuję wartości z dropdownu zwracającego UrlName = "About", DisplayName = "About Us", Active = true. Teraz edytuję rekord. Oto warunek do dopasowania.
1 - UrlName = "About", DisplayName = "O teście", Active = true -> To powinno się zaktualizować.
2 - UrlName = "Informacje", DisplayName = "O nas", Active = false -> To powinno zostać zaktualizowane.
3 - UrlName = "Informacje", DisplayName = "Informacje o teście", Aktywne = false -> To powinno zostać zaktualizowane.
Ważne: 4 - UrlName = "newnotexist", DisplayName = "O teście", Active = false ->Powinno to zaktualizować nazwę UrlName i pozostawić odpoczynek po zmianie.
5 - UrlName = "Kontakt", DisplayName = "Informacje o teście", Aktywny = fałsz ->Nie powinien aktualizować i generować błędu.
Mam nadzieję, że rozumiesz, co chcę zrobić.
'(p.DisplayName! = Displayname || p.DisplayName == displayName)' i '(p.Active! = Aktywny || p.Active == aktywne)' zawsze będzie prawdą. Również nie jest jasne, co próbujesz osiągnąć. Czy możesz zmienić sformułowanie? –
@Bala R, dzięki za odpowiedź. To jest dla formularza edycji. Nazwa UrlName jest unikalna w DB, ale DisplayName i Active nie są. Mam formularz z tymi 3 polami. Załadujesz 3 pola z listy rozwijanej. Teraz chce edytować DisplayName i Active z tą samą nazwą UrlName, niż powinna zaktualizować. W innym scenariuszu chce zmienić adres URL inny niż to, co jest ładowane (może zmienić inne wartości), ale nie może być unikalny i spróbować go zapisać, co powinno dać błąd. Czy teraz mam jasne? – Pirzada