Как удалить формат из свойства Linq? - PullRequest
2 голосов
/ 18 сентября 2011

Я создаю приложение Windows Forms, используя LINQ to SQL. Я использую автоматически сгенерированный код из DBL-файл.

Visual Studio сгенерировала этот код для свойства CNPJ из моей таблицы:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CNPJ", DbType="VarChar(20) NOT NULL", CanBeNull=false)]
public string CNPJ
{
get
{
  return this._CNPJ;
}
set
{ 
  if ((this._CNPJ != value))
  {
     this.OnCNPJChanging(value);
     this.SendPropertyChanging();
     this._CNPJ = value;
     this.SendPropertyChanged("CNPJ");
     this.OnCNPJChanged();
  }
 } 
}

и я хотел вот что:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CNPJ", DbType="VarChar(20) NOT NULL", CanBeNull=false)]
public string CNPJ
{
get
{
  return APPLY_FORMAT(this._CNPJ);//Changed here
}
set
{ 
  if ((this._CNPJ != value))
  {
     this.OnCNPJChanging(value);
     this.SendPropertyChanging();
     this._CNPJ = REMOVE_FORMAT(value); /// Changed here
     this.SendPropertyChanged("CNPJ");
     this.OnCNPJChanged();
  }
 } 
}

Но я потеряю эти изменения при повторной генерации кода. Вопрос в том, как правильно выполнить это поведение (наследовать и переопределять, захватывать события изменения и т. Д.)?

Если вам интересно, CNPJ - это идентификационный номер предприятия Бразилии, предоставленный правительством.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2011

Вместо того, чтобы пытаться изменить существующее свойство, создайте новое свойство.

public partial class YourClass
{
    public string FORMATTED_CNPJ
    {
        get
        {
            return APPLY_FORMAT(this._CNPJ); 
        }
        set
        {
            this.CNPJ = REMOVE_FORMAT(value);
        }
    }
}

Если вы не хотите, чтобы кто-либо получал доступ к базовому свойству CNPJ, вы можете установить его как приватное в конструкторе (комбинированный список модификаторов доступа в окне свойств столбца). Вы даже можете переименовать это свойство в _CNPJ, сделать его приватным, а затем назвать свое свойство «обертка» выше CNPJ, если хотите избежать каких-либо критических изменений.

0 голосов
/ 18 сентября 2011

LINQ to SQL создает классы как частичные классы. Вы можете создать другой частичный класс в другом файле, но с тем же именем класса, а затем изменить его поведение.

public partial class YourClass
{
    partial void OnCNPJChanged()
    {
        this._CNPJ = REMOVE_FORMAT(value);
    }
}

См. здесь для получения дополнительной информации.

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