我正在考虑两个IRepository接口中的一个,一个是IQueryable的后代,另一个包含IQueryable。
就像这样:
或者这个:
LINQ的使用方法如下:
或者...
就像这样:
public interface IRepository<T> : IQueryable<T>
{
T Save(T entity);
void Delete(T entity);
}
或者这个:
public interface IRepository<T>
{
T Save(T entity);
void Delete(T entity);
IQueryable<T> Query();
}
LINQ的使用方法如下:
from dos
in ServiceLocator.Current.GetInstance<IRepository<DomainObject>>()
where dos.Id == id
select dos
或者...
from dos
in ServiceLocator.Current.GetInstance<IRepository<DomainObject>>().Query
where dos.Id == id
select dos
我有点喜欢第一个,但是模拟起来有问题。其他人是如何实现可LINQ,可模拟的存储库的?
Query()
中返回 所有 实体,然后在使用 LINQ 进行搜索的消费代码中,它会进行延迟加载,是吗?它不会实际加载成千上万条记录,然后在消费代码中搜索。 - gideon