我正在尝试在我的MVC应用程序中决定数据访问的最佳模式.目前,在遵循MVC店面系列之后,我正在使用存储库,将IQueryable暴露给服务层,然后服务层应用过滤器.最初我一直在使用LINQtoSQL
public interface IMyRepository
{
IQueryable<MyClass> GetAll();
}
Run Code Online (Sandbox Code Playgroud)
实施于:
public class LINQtoSQLRepository : IMyRepository
{
public IQueryable<MyClass> GetAll()
{
return from table in dbContext.table
select new MyClass
{
Field1 = table.field1,
... etc.
}
}
}
Run Code Online (Sandbox Code Playgroud)
过滤ID:
public static class TableFilters
{
public static MyClass WithID(this IQueryable<MyClass> qry, string id)
{
return (from t in qry
where t.ID == id
select t).SingleOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
从服务中调用:
public class TableService
{
public MyClass RecordsByID(string id)
{
return _repository.GetAll()
.WithID(id);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用带有LINQ …