Как подготовить данные для отображения на диаграмме Silverlight с помощью WCF RIA Services + Entity Framework

Я использовал службы WCF RIA с Entity Framework, чтобы создать простое приложение, которое может отображать и обновлять данные о школьных курсах. Это было сделано с помощью руководств Microsoft. Теперь я хотел бы иметь диаграмму, которая показывает, сколько курсов находится на ключевой стадии.

Пример:

Key Stage 3 - 20 курсов
Key Stage 4 - 32 курса
Key Stage 5 - 12 курсов

Отображается на любой диаграмме. У меня нет проблем с привязкой данных к диаграмме в XAML. Моя проблема в том, что я не знаю, как исправить способ преобразования данных в этот формат. Сгенерированные методы CRUD являются базовыми.

У меня есть несколько мыслей о возможных путях, но я не знаю, какой из них правильный, это:

  1. Создайте представление на сервере SQL и сопоставьте его с отдельной сущностью в модели данных сущности. Автоматическое создание для этого новых методов CRUD.

  2. Настройте метод чтения в существующей службе DomainService, используя .Select () .Distinct () и т. Д. Не очень хорошо знаком с этим синтаксисом labda expressions / LINQ ??? что это? Есть какие-нибудь хорошие советы по этому поводу?

  3. Создайте новый класс для хранения только необходимых данных и создайте для него метод чтения. Пробовал, но не знал, как заставить его работать без соответствующей сущности в модели сущностей.

  4. То, о чем я не подозреваю.

Я новичок в этом и борюсь с концепциями, поэтому, если есть полезные блоги или документация, которые я пропустил, не стесняйтесь указывать мне на них. Но я не уверен в терминологии, которую буду использовать при поиске в данный момент.


person Banford    schedule 07.05.2010    source источник
comment
Может ли кто-нибудь предоставить дополнительную информацию о том, где я должен выполнять эту логику с помощью служб RIA. Были бы полезны даже некоторые ссылки на более сложные руководства. Покрытие больше, чем просто CRUD.   -  person Banford    schedule 24.05.2010


Ответы (3)


Один из способов - создать класс модели. Модель - это класс, представляющий данные, которые вы хотите отобразить. Например, у меня может быть таблица с 10 полями, но мне нужно отобразить только 2. Создайте модель с этими двумя свойствами и верните ее из уровня данных.

вы можете использовать структуру сущностей для перекачки данных в новый класс, например

Класс модели:

public class Kitteh
{
    public string Name { get; set; }  
    public int Age { get; set; }
}

Запрос объекта:

public Iqueryable<Kitteh> getKittehz
{
    var result = from x in Data.TblCats
                 select new Kitteh  
                 {
                    Name = x.Name, 
                    Age = x.Age
                 }
    return result;
}

Если вас интересует передовой подход к созданию приложений Silverlight, я предлагаю вам изучить шаблон MVVM.

http://www.silverlight.net/learn/videos/silverlight-4-videos/mvvm-introduction/

http://www.silverlight.net/learn/tutorials/silverlight-4/using-the-mvvm-pattern-in-silverlight-applications/

person BentOnCoding    schedule 25.04.2011

Я пытаюсь проделать аналогичную работу.

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

Я собираюсь создать класс в проекте silverlight для описания chartItem: он будет иметь 2 строковых свойства: Key и Value.

Затем создайте объект коллекции ... В вашем случае это может быть класс с одним свойством типа Dictionary<string,string> myCollection... или ObservableCollection<ChartItem> myCollection

Следующим шагом является выполнение цикла ForEach для данных, возвращаемых с сервера, и добавления в вашу коллекцию.

myCollection.Add(new chartItem{ Key= "Key Stage 3", Value = "20 Courses" });
myCollection.Add(new chartItem{ Key= "Key Stage 4", Value = "60 Courses" });
myCollection.Add(new chartItem{ Key= "Key Stage 5", Value = "10 Courses" });

... больше подписаться, если вы все еще ищете ответ

person Greg    schedule 30.12.2010

Нет простого способа включить представления в Entity Framework, поскольку он не позволяет включать какие-либо таблицы / представления без «ключа» (PrimaryKey), что потребует дополнительных усилий, поскольку вам придется вручную отображать представление в EDMX, а затем отображать ключи и т. Д. .

Теперь мы нашли альтернативный подход,

  1. Создайте представление под названием ChartItems в своей БД
  2. Создать файл LinqToSQL ViewDB
  3. Перетащите View ChartItems в ViewDB
  4. Создайте метод ChartItem [] GetChartItems в своем классе службы домена RIA, как показано ниже.
public ChartItem[] GetChartItems(..parameters...){
   ViewDB db = new ViewDB();
   return db.ChartItems.Where(...query mapping...).ToArray();
}

Класс службы домена RIA может содержать любой произвольный метод, который вы можете напрямую вызвать из клиента с параметрами. Это так же просто, как вызов веб-службы. И вам нужно вернуть массив, потому что IQueryable может работать или не работать в некоторых случаях, но мы предпочитаем Array. Вы можете попробовать IQueryable, но он может некорректно работать с linq to SQL.

person Akash Kava    schedule 19.04.2011