SQL 서버 데이터베이스와 통신하는 간단한 ASP.NET 응용 프로그램을 구축하고 있습니다. 별도의 프로젝트에서 Visual Studio에 의해 생성 된 데이터 집합이 있습니다. 데이터베이스의 모든 사용자를 표시하는 API를 노출하려고하지만 예외가 발생합니다. 여기 DataRow가있는 ASP.NET 컨트롤러
코드입니다 :public class UserController : ApiController {
public IEnumerable<GWDataSet.usersRow> GetAllUsers() {
GWDataSet gw = new GWDataSet();
usersTableAdapter adapter = new usersTableAdapter();
adapter.Fill(gw.users);
return gw.users.AsEnumerable();
}
}
그리고 이것은 예외 :
Type 'System.Data.DataRow' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.
이 주위에 방법이 있나요 이외의 수동 시스템에서 생성 된 코드를 편집 할 수있는? 내 두려움은 다음에 데이터 세트를 변경하면 내가 추가 한 모든 datacontract 요소를 덮어 쓰게 될 것입니다. 이렇게 할 방법이 있다고 생각 하겠지만 찾지 못하는 것 같습니다.
감사합니다.
나는이 작업을 시작했는데, 나는 데이터베이스에 이것을 적용 할 때 (나는 이것에 대해 지금 배우 고있다.) 유지해야 할 것 같다. 두 영역의 코드는 기본적으로 같은 것입니다. DataRow는 데이터베이스에서 사용자 정보를 노출하므로 간단한 방법으로 재사용 할 수 있기를 바랍니다. –
@DanChampagne Filipe가 맞습니다. API의 데이터를 나타 내기 위해 별도의 클래스를 만들고 싶을 것입니다. 비록 당신이 일을 복제하고있는 것처럼 느낄지라도 정말로 그렇지 않습니다. API를 통해 데이터베이스의 모든 것을 절대 공개하고 싶지는 않을 것입니다. DB와는 별도로 디자인을 생각하고 싶을 것입니다. 또한 자동 생성 코드를 수동으로 편집하면 항상 혈액으로 끝납니다. :) –