РИА Сервис - без базы данных? - PullRequest
0 голосов
/ 15 марта 2010

Helo!

Мне нужно написать службу RIA для вызова веб-сервисов Java из приложения Silverlight 3.0. Я тестирую, как все работает, и в моем веб-приложении у меня есть класс MyData, который имеет 2 свойства (int ID, строка Text):

namespace SilverlightApplication1.Web
{
    public class MyData
    {
        [Key]
        public int ID { get; set; }

        public string Text { get; set; }
    }
}

Тогда я написал простой DomainService:

[EnableClientAccess()]
public class MyService : DomainService
    {
        public IQueryable<MyData> GetMyData(string Url)
        {
                    // here I will call my WebService

            List<MyData> result = new List<MyData>();
            result.Add(new MyData { ID = 1, Text = Url });
            return result.AsQueryable();
        }
    }
}

Как я могу получить данные в мое приложение SL? Теперь у меня есть это:

пространство имен SilverlightApplication1 { открытый частичный класс MainPage: UserControl { public MainPage () { InitializeComponent (); MyContext context = new MyContext (); } } }

Я звонил и загружал, но не думал, что worsk (исключения или нули) ...

У меня была аннотация Invoke, но MyData не является TEntity, и я также не могу использовать строки или другие простые типы ...: / Я читаю и читаю сообщения, и ничто не работает так, как должно ..

Любая помощь будет очень признательна.

Спасибо!

1 Ответ

0 голосов
/ 18 мая 2010

Ваш код хорошо выглядит на сервере. Вы захотите переместить контекст за пределы конструктора MainPage и добавить обратный вызов к вашей операции загрузки. Также убедитесь, что на страницу добавлено использование System.ServiceModel.DomainServices.Client (для LoadOperation).

using System.Linq;
using System.ServiceModel.DomainServices.Client;
using System.Windows.Controls;
using SilverlightApplication1.Web;


namespace SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        MyContext context = new MyContext();
        public MainPage()
        {
            InitializeComponent();

            context.Load(context.GetMyDataQuery("url"), loadCallback, null);
        }

        void loadCallback(LoadOperation op)
        {
            MyData d = context.MyDatas.First();
        }
    }
}
...