2009-01-21 8 views
0

.NET 웹 서비스를 데이터베이스 인터페이스로 사용하고 있습니다. 이 웹 서비스에서 행을 반환하는 가장 좋은 방법은 무엇입니까?.NET 웹 서비스에서 행 반환

.NET 2.0에 DataTable 객체를 반환하는 데 문제가 있음을 모호하게 기억합니다. 그 문제는 여전히 존재합니까?

업데이트 : 일부는 theissues in .NET 1.1입니다. 또한 2.0에서 DataTable은 클라이언트 측에서 DataSet 객체로 deserialize됩니다. 나 맞아?

답변

2

ADO.net의 업무를 효과적으로 수행하려고합니까? POCO (평범한 오래된 C# 객체)를 반환하는 것이 훨씬 효율적입니다.이 객체를 효율적으로 직렬화하여 비누를 보내 다른 측면에서 다시 가져올 수 있습니다. 어쩌면 당신이하려고하는 것에 관해 당신의 질문에 더 많은 정보를 주실 수 있습니다.

.net 3.0에서는 DataRows 및 DataTable이 변경되지 않았습니다. 엔티티 프레임 워크를 사용하여 다른 문제가 발생하더라도 상황을 전달하려고합니다. 행이 있다면 Linq를 사용하여 직렬 엔티티를 작성한 다음 행 엔티티를 콜렉션으로 전달하십시오. 엔티티를 클라이언트 측의 데이터 컨텍스트로 재구성하여 참조 연결이 백업되도록하는 방법이 있습니다.

+0

내 웹 서비스가 데이터베이스의 레코드를 가져옵니다. 나는 단순히 클라이언트에 행을 반환하고자합니다. DataSet/DataTable을 반환하면 작동하지만 .NET 2.0에서는 다시 나쁜 점을 들었습니다. .NET 3.0에도 비슷한 문제가 있습니까? –

+0

그 "나쁜 것들"은 실제로 무엇입니까? 공연? –

+0

아니, 내가 찾은 몇 가지 링크가 있습니다 : http://support.microsoft.com/kb/306134 및 http://bytes.com/groups/net-web-services/376326-possible-return-datatable-webservice- method 다음은 .NET 2.0에 적용됩니다. 3.0에 어떻습니까? –

1

Spence와 동의합니다. 웹 서비스를 사용하면 클라이언트와 계약을 맺을 수 있습니다. 이 계약은 데이터베이스의 모양을 변경하려는 경우에만 해지해서는 안됩니다. 테이블 구조와 일치하는 클래스를 만들고이 구조체의 "목록"개체를 반환합니다. 그런 다음 데이터 모델이 변경되면이 인터페이스를 유지하고 새 구조와 일치하는 두 번째 서비스 메서드를 만들 수 있습니다.