EntityData模型到ObservableCollection

时间:2012-01-10 22:05:36

标签: wpf entity-framework mvvm observablecollection

在我的应用程序中,我使用Entity FrameWork访问我的数据。它是一个WPF MVVM应用程序。我希望将我的实体数据更改为ObservableCollection。有没有办法做到这一点?帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

分割等级/关注点的最灵活方法是为每种类型编写转换器。这通常被称为将实体数据类型(EDO)转换为数据传输类型(DTO),反之亦然。这是一个潜在的例子:

    public ObservableCollection<DTO.Schedule> GetSchedules(DateTime day)
    {
        using (var ctx = new MyContext())
        {
            var endOfDay = day.Date.Add(new TimeSpan(23, 59, 59));
            var found = from schedule in ctx.Schedules
                where (schedule.Date >= day.Date) && (schedule.Date <= endOfDay)
                select schedule;

            return new ObservableCollection<DTO.Schedule>(found.Select(GetSchedule));
        }
    }

    private static DTO.Schedule GetSchedule(EDO.Schedule schedule)
    {
        return schedule == null
            ? null
            : new DTO.Schedule
            {
                Id = schedule.ScheduleID,
                Name = schedule.Name,
                Description = schedule.Description,
                Status = schedule.Status,
                Date = schedule.Date,
            };
    }