경우에 따라 실제적인 이유로 "후행 재산"이 필요한 재산이 있습니다. 예를 들어백업 속성의 이름을 지정하고 매핑하는 방법은 무엇입니까?
, 나는 이름 속성이 하나 개의 유형이 - 액세스에서 발생하는 가치에는 변화가 없기를, 그것은 단지 어떤 종류의 작업을 실행; 당신이 원한다면, 부작용. (이 토론을 위해 중요하지,하지만 변경하면이 특별한 경우에, 이름은 다른 곳에 복사됩니다.)
의가 있다고 가정 해 봅시다 :
는public class Person
{
private string __name;
protected internal virtual string _name
{
get
{
return this.__name;
}
set
{
this.__name = value;
}
}
public virtual string Name
{
get
{
return _name;
}
set
{
_name = value;
// action when changing the name takes place here...
}
}
}
그래서 "_name"속성에 매핑 데이터베이스는 보호하지만 내부적으로 보호되어 있으므로 직접 수정할 수 없습니다. 두 번째 공용 속성 인 "이름"은 실제 액세스 권한을 제공합니다.
내가이 방법으로 설정 한 이유는 매핑 된 "_name"속성의 set-method에 해당 동작이 직접 작성 되었기 때문에 개체가 데이터베이스에서 수화되었을 때 트리거되기 때문입니다. 내가 원하는.
이렇게 모두 정상적으로 작동합니다.
이 문제는 해당 속성이 매핑되지 않은 당신이이 유형을 조회해야하는 경우, Person.Name를 조회하려고 시도하는 것은 작동하지 않습니다 때문에! 나는 이것에 대해 싫어하는 무엇
, 당신은 Person.Name에 대해 코드를 작성하지만, 오류가 발생하기 쉬운 및 혼란 Person._name, 대한 쿼리를 작성해야하고 있다는 사실이다.
이 문제를 해결하는 더 좋은 방법이 있습니까?
그래서이 직접 백업 필드를 매핑하고, 같은 속성을 필요로하지 않는다? (재산을 mappping하는 것과 반대로 벌금 또는 다른 부작용이 있습니까?) –
예, 정확하게. 페널티가 없습니다. getters/setter 속성에서 코드의 부작용을 피하기 때문에 정확하게 속성을 매핑하는 기본 방법입니다. – TomMhC
어떻게 아무도 당신에게이 물건을 알려주지 않습니까 ?? :-) ... 고맙습니다! –