我正在使用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();
}
答案 0 :(得分:1)
傻傻的我......
以上采用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的东西(包装器)。