Пользовательские свойства в сгенерированных таблицах Linq - PullRequest
0 голосов
/ 29 апреля 2011

Имеет смысл использовать целое число в базе данных, но я хочу сделать вид, что это всегда была строка (а не строка, соответствующая int), потому что она проще.

Причина этого заключается в том, что пользовательское представление является зашифрованной версией строки, но я никогда не хочу видеть int, если не работаю напрямую с базой данных (int является столбцом IDENTITY).

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

[global::System.Data.Linq.Mapping.ColumnAttribute] //...
public int TID
{
    get
    {
        return this._TID;
    }
    set
    {
        if ((this._TID != value))
        {
            this.OnTIDChanging(value);
            this.SendPropertyChanging();
            this._TID = value;
            this.SendPropertyChanged("TID");
            this.OnTIDChanged();
        }
    }
}

С этим

[global::System.Data.Linq.Mapping.ColumnAttribute] //...
public string TID
{
    get
    {
        return Convert.ToString(this._TID + 5);
    }
    set
    {
        if ((this._TID - 5 != Int32.Parse(value)))
        {
            this.OnTIDChanging(value);
            this.SendPropertyChanging();
            this._TID = Int32.Parse(value) - 5;
            this.SendPropertyChanged("TID");
            this.OnTIDChanged();
        }
    }
}

Это позволило бы мне, например, использовать asp:QueryStringParameter в WhereParameters LinqDataSource вместо переотображения строки запроса в коде позади.

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Вместо переназначения попробуйте расширить класс linq и добавить новое свойство в класс

Public string TIDstring
{
get { return (this.TID + 5).toString(); }
set
    {
       int val = 0;
       if (int.TryParse(value, out val)
           this.TID = val - 5;
       else
           throw new Exception("Invalid TID Value")
    }

}
0 голосов
/ 02 мая 2011

Как насчет использования свойства Where вашего SqlDataSource, чтобы сделать что-то вроде этого:

Where = "it.[TID] = (@TID - 5)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...