가정하자 나는 다음과 같은 특성을 가진 직원 객체가 있습니다. 평범한 비즈니스 객체에서, 나는 속성에 그것을 단순히 코드화 하겠지만 클래스가 재생성되어야한다면 이것은 아마도 지워질 것입니다.계산 된 속성은
데이터베이스 엔터티에 매핑하는 과정을 거치지 않고이를 구현할 수있는 EF 표준 방법이 있습니까?
가정하자 나는 다음과 같은 특성을 가진 직원 객체가 있습니다. 평범한 비즈니스 객체에서, 나는 속성에 그것을 단순히 코드화 하겠지만 클래스가 재생성되어야한다면 이것은 아마도 지워질 것입니다.계산 된 속성은
데이터베이스 엔터티에 매핑하는 과정을 거치지 않고이를 구현할 수있는 EF 표준 방법이 있습니까?
실제로. 별도의 파일을 만듭니다 (예 : EmployeeExtension.cs). 이 파일에서
다음 코드를 넣습니다public partial class Employee
{
public decimal Salary
{
get { return Hours * Wage; }
}
}
디자이너가 알고 있기 때문에 SQL과 엔티티 프레임 워크 클래스는, 당신은 많은 파일을 통해 정의를 분할 할 수 있도록하는 부분 키워드로 생성되는 LINQ에 기본 소스 파일을 계속 자동 생성하여 덮어 쓰지 않는 클래스에 멤버를 추가하려고합니다.
정확하게 기억한다면 EF로 만든 클래스가 부분적입니다. 그래서 당신은 아마도 다른 파일 다른 부분 클래스를 포함 이상이
public single Salary
{
get
{
return this.Hours * this.Wage;
}
}
트릭을 할해야 속성을 구현합니다 (같은 네임 스페이스 물론 같은 클래스 명)을 추가 할 수 있습니다 (그 싱글이 널이 아닌 경우, 마음을!)
엔티티 클래스에서 속성을 구현할 수 있습니다. 엔티티 프레임 워크는 부분 클래스를 생성하여 클래스에 멤버를 추가 할 수있게합니다. 다음과 같은 클래스를 코드에 추가하십시오.
public partial class Employee {
public Single Salary {
get { return Hours*Wage; }
}
}
처음에는 'Argo의 답변'을 얻을 수 없었습니다. 주위에 조금 놀고 난 후에 나는 (WCF에서와 같이) 다음 속성이 모두 잘 작동하는 속성을 장식하면 알았다.
[global::System.Runtime.Serialization.DataMemberAttribute()]
''Argo의 지침에 따라 별도의 파일 (예 : EmployeeExtension.cs)을 만듭니다. 이 부분은 설명 된대로 부분 표시해야합니다. 이 도움이 ...
public partial class Employee
{
[global::System.Runtime.Serialization.DataMemberAttribute()]
public decimal Salary
{
get { return Hours*Wage; }
}
}
희망 :
이 파일에 다음 코드를 넣습니다.이것은 나를 위해 Entity Framework 5에서 작동하지 않습니다. 나를위한 해결책은 [NotMapped] 특성을 사용하는 것이 었습니다. 자세한 내용은 Code First DataAnnotations
우수! 그림자 수업을 만들고 있었는데 완전히 고통 스러웠습니다. 감사합니다 –
이것은 실제 데이터 모델에서 정의되지 않았기 때문에 Linq와 엔티티에서는 작동하지 않습니다. * .edmx에서 계산 된 필드를 정의하는 방법이 있습니까? – AaronLS
"작동하지 않는 것"보다 구체적 일 수 있습니까? 데이터베이스 수준에서 계산 된 값을 가진 열을 참조하는 경우 완전히 다른 짐승입니다. – JoshJordan