0

코드 우선 접근 방식을 사용하여 Entity Framework 5 및 POCO 클래스를 사용하는 응용 프로그램이 있습니다.n 계층 아키텍처가있는 Entity Framework 5

이 방법은 모든 데이터베이스 테이블을 Poco 클래스로 모델링하여 EDMX 대신 모델을보다 잘 제어 할 수 있습니다.

응용 프로그램이 정상적으로 작동하지만 이제는 WCF 계층을 추가하기 위해 n 계층 아키텍처에서 작동합니다.

이렇게하는 가장 좋은 방법은 무엇입니까?

저는 WCF에 익숙하지만 ADO.NET에서 데이터 집합을 반환합니다. 최고의 성능을 위해 XML 대신 JSON을 반환 할 수 있으므로 JSON 객체를 클라이언트 및 viceversa에 반환하는 Entity Framework를 사용하여 WCF Layer를 구현하는 방법을 살펴볼 수있는 예가 있는지 전문가가 알고 싶습니다.

모든 가이드에 감사드립니다.

답변

1

사용자 지정 클래스를 만들거나 엔터티 프레임 워크 클래스를 사용하면 이러한 변경 사항이 없습니다. 오직 당신이 [DataContract]를 직렬화해야하는 클래스 위에두고 [DataMember]를 서비스에 직렬화해야합니다.

예 :

[DataContract] 
public class Test 
{ 
    [DataMember] 
    public string field1 {get; set;} 

    [DataMember] 
    public string field2 {get; set;} 
} 

는 그리고 WCF 서비스를 만들 수는 아래의 코드를 넣어 필요 :

는 서비스 인터페이스에있을 것입니다 그리고 당신은 클래스에서 구현해야합니다.

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    List<test> GetTest(); 

도움이되기를 바랍니다. :)

+0

감사합니다. 그래서 내 Client와 내 WCF 서비스 프로젝트에서 별도의 Project.Models 및 참조를 가질 수 있으며, 직렬화 될 모든 속성에 datacontract 및 datamember를 추가 할 수 있습니까? – VAAA

+0

위대한 그 잘 작동 .. 지금 나는 문제가 클라이언트에서 WCF 메서드를 호출 할 때 : Model.User user = clientWCF.ValidateUser ("test", "test"); User 개체 유형이 Model.User와 다르며 동일한 모델을 참조하기 때문에 이상하게 작동하기 때문에 오류가 발생합니다. 내가 사용하는 경우 : var user = clientWCF.ValidateUser ("test", "test"); 나는 안에 뭐가 있는지 볼 수있다. – VAAA

+0

서비스 코드를 공유하고 model.user도 공유 할 수 있습니까? 그래서 나는 그 문제를 바로 잡을 수있다. :) –

관련 문제