Изменить свойство LINQ2SQL в частичном классе? - PullRequest
2 голосов
/ 19 апреля 2010

В моей диаграмме LINQ2SQL есть таблица со столбцом DayOfWeek в таблице JourneyBooking.Это определение для файла designer.cs:

[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 в зависимости от того, было ли это getили установить, возможно ли это, или мне нужно переписать весь приведенный выше код в моем частичном классе?

Ответы [ 3 ]

4 голосов
/ 19 апреля 2010

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

public int DayOfWeek
{
    get { return DayOfWeekStorage -1; }
    set { DayOfWeekStorage = value + 1; }
}
1 голос
/ 19 апреля 2010

Нет, с LINQ to SQL нет действительно хорошего способа сделать это.

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

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

0 голосов
/ 19 апреля 2010

Вы можете проверить эту проблему / решение. Я задавал этот тип проблем раньше:] Проблема с реализацией интерфейса в частичных классах надеюсь, это поможет!

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