Производный тип с условием DateTime - PullRequest
0 голосов
/ 23 июня 2009

У меня есть таблица Show, и я хотел бы иметь производный тип, называемый ActiveShow, который возвращает только шоу в будущем

Show.ShowDateTime > DateTime.Now

Есть ли способ, которым я могу добиться этого с помощью дизайнера или некоторых другихиначе, чтобы при создании экземпляра ActiveShow всегда соблюдалось условие даты?

1 Ответ

1 голос
/ 23 июня 2009

Абсолютно, вы можете сделать это, используя DefiningQuery (который по сути является представлением TSQL) в SSDL.

Но я не рекомендую это.

Проблема в том, что членство в типах будет временным, когда оно должно быть постоянным или, по крайней мере, потребовать от вас явного изменения.

т.е. Вы можете оказаться в ситуации, когда в какой-то момент что-то будет ActiveShow (и загружено в память), но если вы выполните последующий запрос, вы можете попытаться загрузить тот же объект, что и Show. В этой ситуации, что произойдет с разрешением личности, можно только догадываться.

Это, скорее всего, прибегнет к некоторым очень неприятным неожиданным побочным эффектам.

В качестве альтернативы может быть добавлено дополнительное свойство в вашем контексте в частичном классе:

т.е.

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

Это, вероятно, дает вам большинство преимуществ без большинства рисков.

Надеюсь, это поможет

Alex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...