0

我正在使用NDatabase,但在尝试绑定IEnumerable<T>我正在使用基本数据访问层 ( BaseDAL) 检索的数据时遇到问题。

public IEnumerable<T> GetMany<T>()
{
  using(var odb = OdbFactory("Example.db"))
  {
    return odb.AsQueryable<T>().ToList();
  }
}

T在我的例子中是Employee.

public interface IEmployee
{
  string Username { get; set; }
  List<UserConfiguration> ConfigurationList { get; set; }  
}

本质上我需要一个List<Employee>可以用来绑定到网格的(目前我明白了the underlying datasource doesn't support editing)。

我知道我需要以某种方式实现IBindingList,但是这方面的实现是巨大的!我想知道是否有人可以指出我正确的方向?还是我必须遵循以下原则:

public class BindableList<T> : IObjectSet<T>, IBindingList {}

谢谢!

NDatabase IObjectSet 结构

public interface IObjectSet<TItem> : ICollection<TItem>, IEnumerable<TItem>, IEnumerable
{
  TItem GetFirst();
  bool HasNext();
  TItem Next();
  void Reset();
}
4

2 回答 2

1

傻我...

BindingList<T>

上面需要一个构造函数,IList所以我只需要将我的BaseDAL方法更改为:

public IEnumerable<T> GetMany<T>()
{
  using(var odb = OdbFactory("Example.db"))
  {
    return new BindingList<T>(odb.AsQueryable<T>().ToList());
  }
}
于 2013-01-28T12:18:29.353 回答
0

您编写的代码可以通过以下方式改进:

public IEnumerable<T> GetMany<T>()
{
  using(var odb = OdbFactory("Example.db"))
  {
    return new BindingList<T>(odb.QueryAndExecute<T>().ToList());
  }
}

此代码没有使用在这种情况下您不需要的所有 Linq to NDatabase 事物(包装器)。

于 2013-02-07T06:54:46.137 回答