如何将DbSet转换为ObservableCollection

本文关键字:ObservableCollection 转换 DbSet | 更新日期: 2023-09-27 18:20:41

我想创建一个值转换器,将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不是真正的类型。有人能帮我做什么吗?

如何将DbSet转换为ObservableCollection

拥有:

 DbSet<Thread> Threads;

用途:

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

不要在转换器中执行此操作。在ViewModel中执行此操作。这样,您的ViewModel将具有对DbSet<T>(而不仅仅是object)的强类型引用,并且将知道T是什么类型。