很多可以通过用您自己的自定义存储库替换Linq2Sql部件来使用的示例。由于它是IQueryable,因此可以用“WebsiteList.AsQueryable()”替换它,并按原样使用大部分示例。举例来说,这里是一个虚拟存储库使用:
public class FakeRepository<T> : IResourceRepository<T> where T : class
{
private readonly List<T> items = new List<T>();
private readonly IObjectFactory resolver;
public FakeRepository(IObjectFactory resolver)
{
this.resolver = resolver;
}
public IQueryable<T> GetAll()
{
return this.items.AsQueryable();
}
public void Save(T item)
{
if (!this.items.Contains(item))
{
this.items.Add(item);
}
}
public void Delete(T item)
{
this.items.Remove(item);
}
public T Create()
{
return this.resolver.GetInstance<T>();
}
}
我可以用实际存储库(可能是LINQ2SQL,ADO.NET实体,亚音速,...)轻松地交换了这一点。
我这样做〜〜LINQ到SQL也是如此。我不喜欢我的代码库其余部分与LINQ生成的类紧密绑定,因此它们在我创建的POCOs之间进行了转换。 – mmcdole 2009-06-30 03:47:06