Więc oto moja sytuacja:Entity Framework, soft-kasowanie i zapytań
jestem miękki usuwając kilka wierszy w tabeli, za pomocą IsDeleted
flagę, tak, że można zachować ślad moich danych archiwalnych. Robię to, zastępując oświadczenie SaveChanges
w moim ObjectContext
.
Pytanie brzmi: jak mogę wybrać tylko wiersz (y), które mają IsDeleted == false
, bez konieczności określenia && !IsDeleted
w każdym zapytaniu?
Czy istnieje sposób, aby określić to bezpośrednio w moim kontekście?
tkx!
EF Kod pierwszego lub modela w pierwszej kolejności? – StriplingWarrior
Zamiast flagi użyj tabeli. Dla usuniętego stołu PK może być taki sam PK jak stół główny, z PK usuniętą tabelą FK do tabeli głównej. Jeśli masz rekord w usunięciu, to jego usunięty, jeśli nie jest aktywny. Wtedy jest to po prostu proste dołączenie. Wydajność kwerendy będzie lepsza niż przy użyciu flagi bitowej. –
@JonRaynor: Bazy danych nie są moją specjalnością, ale wydaje mi się, że sprawdzenie flagi bitowej musi być dużo tańsze niż zrobienie połączenia, zwłaszcza, że zazwyczaj będziesz bardziej zainteresowany wiedzą, które elementy * nie są * usunięte (i dlatego nie są obecne w usuniętej tabeli). Jeśli flaga bitowa wywiera negatywny wpływ na wydajność zapytań, wolałbym indeks nad tworzeniem całkowicie oddzielnej tabeli. – StriplingWarrior