2009-06-23 1 views
0

Ich habe eine Tabelle anzeigen, und ich möchte einen abgeleiteten Typ haben ActiveShow genannt, die nur zeigt in die Zukunft gibtAbgeleitet Typ mit Datetime-Zustand

Show.ShowDateTime > DateTime.Now 

Gibt es eine Möglichkeit, dass ich dies die Verwendung erreichen kann Designer oder eine andere Art, so dass das Erstellen einer Instanz von ActiveShow immer an der Datumsbedingung festhalten wird?

Antwort

1

Absolut können Sie dies mit einer DefiningQuery (die im Wesentlichen eine TSQL-Ansicht ist) in der SSDL tun.

Aber ich empfehle es nicht.

Das Problem ist, dass Mitgliedschaften vorübergehender Natur sind, wenn sie dauerhaft sein sollten, oder zumindest erfordern, dass Sie sie explizit ändern.

I.e. Sie könnten in einer Situation enden, in der zu einem Zeitpunkt etwas eine ActiveShow ist (und in den Speicher geladen wurde), aber wenn Sie eine nachfolgende Abfrage durchführen, könnten Sie versuchen, dasselbe Objekt als Show zu laden. Was in dieser Situation mit der Auflösung der Identität passieren würde, ist eine Vermutung.

Dies wird mehr als wahrscheinlich in einigen sehr unangenehmen unerwarteten Nebenwirkungen greifen.

Als Alternative vielleicht eine zusätzliche Property in Ihrem Kontext hinzugefügt in einer Teilklasse:

heißt

public partial class MyContext 
{ 
    public ObjectQuery<Show> ActiveShows 
    { 
     get{ 
      return this.Shows.Where(s => ShowDateTime > DateTime.Now) 
        as ObjectQuery<Show>; 
     } 
    } 
} 

Dies gibt Ihnen wahrscheinlich die meisten Vorteile, ohne die meisten der Risiken.

this helps

Alex