ما هي الخطوات لقراءة كائن من ADO.net خدمة البيانات ؟

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

سؤال

أنا جديد ADO.net خدمات البيانات ( ، .صافي في عام أيضا..), أنا أعاني من هذا المشروع حيث أنني بحاجة لإعداد خدمة البيانات للقراءة والكتابة إلى قاعدة بيانات مع nHibernate ، لقد خلقت الخدمة:

[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 وقد نجح يبدو أن المشكلة مع دروسي. أنا في عداد المفقودين شيئا ؟

هل كانت مفيدة؟

المحلول

أخيرا حلها:أضفت الخدمة المرجعية (اللي تبونه لم أفعل) و غيرت الاختبار إلى:

[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).

الآن أعتقد أنه كان من السهل, ولكن عندما كنت لا تعلم من الصعب...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top