数据库列表<t>到BindingList </t>

时间:2013-01-28 12:08:47

标签: c# oop data-binding ndatabase

我正在使用NDatabase,我无法尝试使用基础数据访问层(IEnumerable<T>)绑定我正在检索的BaseDAL

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

TEmployee

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();
}

2 个答案:

答案 0 :(得分:1)

傻傻的我......

BindingList<T>

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

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

答案 1 :(得分:0)

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

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

此代码未使用在这种情况下您不需要的所有Linq到NDatabase的东西(包装器)。