2010-04-19 2 views
2

У меня есть таблица в моей диаграмме LINQ2SQL с столбцом DayOfWeek в таблице JourneyBooking. Designer.cs имеет определение этого, как:Изменить свойство LINQ2SQL в частичном классе?

[Column(Storage="_DayOfWeek", DbType="TinyInt NOT NULL")] 
public int DayOfWeek 
{ 
    get 
    { 
     return this._DayOfWeek; 
    } 
    set 
    { 
     if ((this._DayOfWeek != value)) 
     { 
      this.OnDayOfWeekChanging(value); 
      this.SendPropertyChanging(); 
      this._DayOfWeek = value; 
      this.SendPropertyChanged("DayOfWeek"); 
      this.OnDayOfWeekChanged(); 
     } 
    } 
} 

У меня есть частичный класс для класса JourneyBooking. Возможно ли продлить/перезаписать вышеупомянутое свойство DayOfWeek своим собственным имуществом?

Проблема, с которой я сталкиваюсь, заключается в том, что DayOfWeek является 0-6 в C#, но 1-7 в SQL, поэтому я думал, что могу перезаписать свойство DayOfWeek для вычитания или добавления 1 в зависимости от того, был ли он получен или установлен , возможно ли это или мне нужно будет переписать весь код выше в моем частичном классе?

ответ

4

Вы можете гораздо проще написать другое свойство в своем частичном, которое просто ссылается на это в get/set, а затем просто используйте это свойство в своем коде. Например, я бы переименовать сгенерированный один для SQL-то вроде DayOfWeekStorage или DayOfWeekSQL, а затем сделать это в парциальное:

public int DayOfWeek 
{ 
    get { return DayOfWeekStorage -1; } 
    set { DayOfWeekStorage = value + 1; } 
} 
+0

'public int DayOfWeek0 {get ...; задавать ... ; } ', Но вы не можете использовать это в запросах ... :(Возможно, вы можете сделать свойство выражения для выполнения' -1'. – leppie

+0

@leppie - также хорошее имя, независимо от того, что имеет смысл для OP и их работы в команде ! –

1

Нет, с помощью LINQ к SQL не очень хороший способ сделать это.

Вы можете создать объект DayOfWeekStorage (как объяснил Ник Крейвер), сделать его внутренним и определить новое свойство WeekDay DayOfWeek. Это будет даже скомпилировано при использовании этого нового свойства в запросе LINQ. Однако этот запрос LINQ завершится неудачно во время выполнения, поскольку LINQ to SQL не имеет понятия, как преобразовать ваш запрос в LINQ to SQL. Здесь останавливается LINQ to SQL.

Создание нового свойства возможно, если у вас нет намерения использовать его в запросе LINQ (чтобы не фильтровать, группировать и упорядочивать на основе этого свойства), но это легко сделать случайно и узнать во время выполнения ,

Смежные вопросы