Quelles sont les étapes à suivre pour lire un objet à partir d'un service de données ADO.net?

StackOverflow https://stackoverflow.com/questions/1813931

Question

Je suis nouveau dans les services de données ADO.net (et .net en général aussi ..), ce projet me demande de configurer un service de données pour lire et écrire dans une base de données avec nHibernate avez créé le service:

[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;
        }        

Et j'ai créé un test pour le service:

[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);
            }

Lorsque je lance le service avec le navigateur (par exemple, http: // localhost: 1413 / DataService.svc / Factories? Id = 54 ), le service renvoie:

<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>

Mais lorsque je lance le test unitaire, j'obtiens cette exception:

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()

J'ai débogué le projet, donc le test se connecte au service et le service renvoie les données, mais

y a-t-il autre chose que je devrais faire pour convertir les données XML en l'objet réel lorsque je les recevrai?

J'ai fait un test avec un objet string à la place d'une Factory et tout a fonctionné, le problème semble concerner mes classes. Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Enfin je l'ai résolu: J'ai ajouté une référence de service (ce que je n'avais pas fait) et modifié le test en:

[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);
            }

        }

Et maintenant, il passe le test:

Reinhardt strasse

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

Maintenant, je pense que c'était facile, mais quand vous ne savez pas, c'est difficile ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top