Я новичок в службах данных 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;
}
И я создал тест для сервиса:
[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);
}
При запуске службы с помощью браузера (например: http://localhost:1413/DataService.svc/Factories?Id=54), возвращает обслуживание:
<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 в фактический объект, когда я его получу?
Я сделал тест с объектом string
вместо Factory
, и это сработало, проблема, похоже, связана с моими классами. Я что-то упускаю?