Was sind die Schritte, um ein Objekt aus einem ADO.net Datendienst zu lesen?
-
06-07-2019 - |
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?
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 ...