如何将DbSet转换为ObservableCollection

时间:2013-07-01 18:14:52

标签: c# .net wpf

我想创建一个将DbSet<MyEntity>转换为ObservableCollection<MyEntity>的值转换器,以便我可以轻松地将其绑定到WPF XAML中的组合框。我希望它适用于所有类型。

到目前为止我已尝试过这个。

class DbSetToObservableCollectionConverter:IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        try
        {
            DbSet<T> d = (DbSet<T>)value; //How do I know what to put in place of T
            return new ObservableCollection<T>(d);
        }
        catch(Exception ex)
        {
            return value;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

这不起作用,因为T不是真正的类型。 有人可以帮我做什么吗?

2 个答案:

答案 0 :(得分:1)

请勿在转换器中执行此操作。在ViewModel中执行此操作。这样,您的ViewModel将对DbSet<T>(不仅仅是object)进行强类型引用,并且会知道T的类型。

答案 1 :(得分:0)

具有:

 DbSet<Thread> Threads;

使用:

ObservableCollection<Thread> Threads;            

 using (var db = new MyContext())
        {
            Threads =new ObservableCollection<Thread>(db.Threads);
        }