Frage

Ich bin neu in ADO.net Datendienste (und auch allgemein zu .net ..), ich bin dieses Projekt mit dem ich der Einrichtung benötigen einen Datendienst zu einer Datenbank mit nHibernate lesen und schreiben, ich habe den Service erstellt:

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

Und ich habe einen Test für den Dienst erstellt:

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

Wenn ich den Dienst mit dem Browser ausgeführt werden (zB: http: // localhost: 1413 / DataService.svc / Fabriken Id = 54 ), die Service-Rückkehr:?

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

Aber wenn ich ausführen, um den Unit-Test Ich erhalte diese Ausnahme:

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

Ich gedebuggt das Projekt, so dass der Test zu dem Dienst verbindet und der Service liefert die Daten, aber

gibt es alles, was ich tun soll, um die XML-Daten in das eigentliche Objekt zu konvertieren, wenn ich es erhalten?

Ich habe einen Test, mit einem string Objekt anstelle einem Factory und es funktionierte, scheint das Problem mit meinen Klassen. Bin ich etwas fehlt?

War es hilfreich?

Lösung

Schließlich löste ich es: Ich habe eine Service-Referenz (Weiche ich nicht getan hatte), und änderte den Test:

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

        }

Und jetzt geht es den Test:

Reinhardt strasse

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

Jetzt denke ich, das war einfach, aber wenn Sie nicht wissen, ist es schwer ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top