РИА Сервис - без базы данных?

Привет!

Мне нужно написать службу RIA для вызова веб-служб Java из приложения Silverlight 3.0. Я тестирую, как все работает, и в моем веб-приложении у меня есть класс MyData с двумя свойствами (int ID, string 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 {общедоступный MainPage () {InitializeComponent (); MyContext context = новый MyContext (); }}}

Я позвонил и загрузил, но ничего не понял (исключения или нули) ...

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

Любая помощь могла бы быть полезна.

Спасибо!


person Heko    schedule 15.03.2010    source источник


Ответы (1)


Ваш код хорошо выглядит на сервере. Вам нужно переместить контекст за пределы конструктора 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();
        }
    }
}
person JosephC    schedule 18.05.2010