Функция RIA Services SP2 Сложный тип не отображается в контексте объекта - PullRequest
0 голосов
/ 12 мая 2011

Я борюсь с возвратом сложного типа из уровня сервисов. Кажется, он не доступен из контекста моего объекта.

Это запрос на уровне сервиса. Все компилируется нормально.

    public IQueryable<USP_GetPostsByThreadID_Result> uspGetPostsByThreadID(int ThreadID)
    {
        return this.ObjectContext.USP_GetPostsByThreadID(ThreadID).AsQueryable();
    }  

Когда я пытаюсь позвонить с моего клиента, ForumContext не видит его. Я проверил файл, сгенерированный клиентом, и ничего похожего не создается. Помогите !!!

Ответы [ 3 ]

1 голос
/ 12 мая 2011

Имя вашего метода может не соответствовать ожидаемому соглашению для запросов. Попробуйте выполнить одно или оба из следующих действий:

  • Добавить атрибут [Query]
  • Переименуйте метод в GetUspPostsByThreadID

Результат:

[System.ServiceModel.DomainServices.Server.Query]
public IQueryable<USP_GetPostsByThreadID_Result> GetUspPostsByThreadID(int ThreadID)
{
    return this.ObjectContext.USP_GetPostsByThreadID(ThreadID).AsQueryable();
}
1 голос
/ 21 июня 2011

enter image description here

Очень распространено иметь хранимую процедуру, возвращающую данные из нескольких таблиц.Тип возврата не подходит ни под один из типов сущностей (таблицы).Поэтому, если мы определим Complex Type как возвращаемую коллекцию объектов из вызова хранимой процедуры, он станет довольно мощным инструментом для разработчика.

Следуя этим шагам, я успешно добился конфигурации сложного типа в образце базы данных AdventureWorks.,1. Обратитесь к изображению и убедитесь, что импортированы сохраненная процедура и функция.2. Добавьте имя доменной службы как AdventureDomainService.3. Теперь пришло время определить инфраструктуру служб RIA для идентификации моего сложного типа в качестве типа объекта.Чтобы сделать это, нам нужно идентифицировать аннотацию [Key].Типы сущностей обеспечивают структуру данных для модели данных приложения, и в соответствии с дизайном каждый тип сущности необходим для определения уникального ключа сущности.Мы можем определить ключ для одного свойства или набора свойств в файле класса метаданных.CTEmployeeManagers.CTEmployeeManagersMetadata))] публичный частичный класс CTEmployeeManagers {

    internal sealed class CTEmployeeManagersMetadata
    {
        private CTEmployeeManagersMetadata() { }
        [Key]
        public int EmployeeID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int ManagerID { get; set; }
        public string ManagerFirstName { get; set; }
        public string ManagerLastName { get; set; }
    }
}

Определите метод службы Домена, чтобы возвращать коллекцию объектов / сущностей для заполнения сетки Silverlight или любых других элементов управления, потребляющих данные.
public IQueryable<CTEmployeeManagers> GetEmployeeManagers(int empId)
    {
         return this.ObjectContext.GetEmployeeManagers(empId).AsQueryable();
    }

Мы определяем IQueryable, еслимы должны извлекать записи из источников данных, таких как SQL, тогда как мы определяем IEnumerable, если мы должны извлекать записи из коллекций памяти, словарей, списков массивов и т. д.

Скомпилируйте серверную часть для генерации клиентского прокси.

На стороне Silverlight откройте MainPage.xaml или, где бы ни была размещена сетка данных, затем добавьте следующие пространства имен:


с использованием System.ServiceModel.DomainServices.Client;используя SLBusinessApplication.Web;использование SLBusinessApplication.Web.Services;

..


Загрузка данных и отображение:

открытый частичный класс MyPage: Page {AdventureDomainContext ctx = new AdventureDomainContext ();public MyPage () {InitializeComponent ();LoadOperation loadOp = this.ctx.Load (this.ctx.GetEmployeeManagersQuery (29));myGrid.ItemsSource = loadOp.Entities;}

    // Executes when the user navigates to this page.
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {

    }
}

Это все, что нужно сделать.
0 голосов
/ 12 мая 2011

Это должно быть частью сущности.Сложные типы не могут быть возвращены сами по себе

...