2011-09-17 4 views
2

미안은 SQL에 LINQ를 사용 aplication을 형성한다. 자동을 사용 미안은 DBML 파일에서 코드를 생성합니다.어떻게 Linq에 속성에서 형식을 제거 할 수 있습니까? 윈도우를 구축

비주얼 스튜디오 내 테이블에서 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는 정부가 제공하는 brazilin 비즈니스 식별 번호이다. SQL에

답변

0

기존 속성을 변경하는 대신 새 속성을 만듭니다.

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

당신이 누군가가 (열 속성 창에 액세스 수정 콤보를) 디자이너에서 비공개로 당신이 그것을 설정할 수있는 기본 CNPJ 속성에 액세스하지 않으려면

. 해당 속성의 이름을 _CNPJ으로 변경하고 비공개로 설정 한 다음 변경 내용이 적용되지 않도록하려면 CNPJ 위에 '래퍼'속성의 이름을 지정하십시오.

0

LINQ 부분 클래스로 클래스를 생성한다. 다른 파일에서 다른 클래스를 만들 수 있지만 클래스 이름은 같고 동작을 변경할 수 있습니다.

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

자세한 내용은 here을 참조하십시오.

+0

그래, Get 측면은 어떨까요? get 이벤트는 호출하지 않습니다. 나는 그것을 얻을 수 있도록 동일한 특성을 얻고 설정하고 싶다. – Fabio