2009-11-28 2 views
0

저는 ADO.net 데이터 서비스에 익숙하지 않습니다. (또한 .net 또한 일반적으로 ..), nHibernate를 사용하여 데이터베이스에 읽고 쓸 수있는 데이터 서비스를 설치해야하는이 프로젝트를 진행하고 있습니다. 서비스 만들었습니다 :ADO.net 데이터 서비스에서 개체를 읽는 단계는 무엇입니까?

[WebGet] 
    [SingleResult] 
    public Factory Factories(int Id) 
    { 
     try 
     { 
      Factory[] results = this.CurrentDataSource.Session.Linq<Factory>().Where(g => g.Id.Equals(Id)).ToArray(); 
      return results[0]; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     }   

을 그리고 서비스에 대한 테스트 만든 : 나는 브라우저 (예 : http://localhost:1413/DataService.svc/Factories?Id=54)로 서비스를 실행하면

[Test] 
     public void CanReadFactoryDataService() 
     { 
      DataServiceContext ctx = new 
        DataServiceContext(new Uri("http://localhost:1413/DataService.svc")); 
      var Factories = ctx.Execute<Factory>(
        new Uri("Factories?Id=54", UriKind.Relative)); 
      Assert.IsNotNull(Factories); 
      Factory factory = Factories.First<Factory>(); 
      { 
       Console.WriteLine(factory.NAME); 
      } 

을 서비스 리턴 :

<Factories p1:type="ADODS.Core.Factory"> 
<FactorY_CODE>abc</FactorY_CODE> 
<NAME>Nameds</NAME> 
<ADDRESS>Reinhardt strasse</ADDRESS> 
<COMPENSATION_MODEL p1:null="true"/> 
<B_CODE p1:null="true"/> 
<Id p1:type="Edm.Int32">54</Id> 
</Factories> 

그러나 나는이 예외 받고 있어요 단위 테스트 실행하면 내가 프로젝트를 디버깅

TestCase 'Tests.DataServicesTests.CanReadFactoryDataService' 
failed: System.InvalidOperationException : La secuencia no contiene elementos (The sequence contains no elements) 
    en System.Linq.Enumerable.First[TSource](IEnumerable`1 source) 
    H:\ADODS\tests\ADODS.Tests\ADODS.Web\DataServicesTests.cs(22,0): en Tests.DataServicesTests.CanReadFactoryDataService() 

를, 그래서 테스트가 서비스에 연결하고 서비스가 데이터를 반환하지만

이있다 내가 그것을받을 때 xml 데이터를 실제 객체로 변환해야하는 다른 작업은 무엇입니까?

나는 Factory 대신 string 개체를 사용하여 테스트를 수행했으며 문제가 저의 클래스와 관련이있는 것 같습니다. 내가 누락 된 것이 있습니까? 나는 서비스 참조 (느릅 나무는 내가 수행하지 않은) 추가 ,과에 테스트를 변경 :

답변

0

마지막으로 나는 그것을 해결

[Test] 
     public void CanReadFactoryDataService() 
     { 
      ServiceReference1.DataServiceContext ctx = new 
        ServiceReference1.DataServiceContext(new Uri("http://localhost:1413/DataService.svc")); 
      var factories= ctx.Execute<Factory>(
        new Uri("Factories?Id=54", UriKind.Relative)); 
      Assert.IsNotNull(factories); 
      Factory factory = factories.First<Factory>(); 
      { 
       Console.WriteLine(factory.ADDRESS); 
      } 

     } 

그리고 지금은 테스트 통과 :

Reinhardt strasse 

1 passed, 0 failed, 0 skipped, took 3.48 seconds (NUnit 2.5.2). 

이제는 쉽게 생각할 수 있지만 모를 때는 어렵습니다.

관련 문제