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

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

Пример:

Ключевой этап 3 - 20 курсов
Ключевой этап 4 - 32 курса
Ключевой этап 5 - 12 курсов

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

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

  1. Создать представление вSQL-сервер и сопоставьте его с отдельным объектом в модели данных объекта.Генерация новых методов CRUD для этого автоматически.

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

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

  4. Что-то, о чем я не знаю.

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

Ответы [ 3 ]

2 голосов
/ 25 апреля 2011

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

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

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

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/

1 голос
/ 19 апреля 2011

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

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

  1. Создать представление с именем ChartItems в вашей БД
  2. Создание файла LinqToSQL ViewDB
  3. Перетаскивание элементов Chart View в 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.

1 голос
/ 31 декабря 2010

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

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

Я собираюсь создать класс в проекте 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" });

... больше информации, если вы все еще ищете ответ

...