我最近开始自学 C# 和 Asp.net。我正在尝试构建一个简单的博客应用程序。我对存储库模式的使用感到困惑。我看过很少的教程,并且实现方式各不相同。
对于我的博客应用程序,我有两个数据库表(模型)——博客和评论。目前,我有一个如下所示的 IDbContext:
public interface IDBContext
{
IQueryable<Blog> FindAllBlogs();
IQueryable<Blog> FindBlogsInMonth(int month);
Blog GetBlog(int id);
void Add(Blog blog);
void Update(Blog blog);
void Delete(Blog blog);
void Add(Comment comment);
//void Remove(Comment comment);
}
我有如下所示的存储库:
public class BlogRepository : IDBContext
{
private BlogDb db = new BlogDb();
public IQueryable<Blog> FindAllBlogs()
{
return db.Blogs.OrderByDescending(b => b.PublishDate);
}
public Blog GetBlog(int id)
{
return db.Blogs.Single(b => b.BlogID == id);
}
...
}
存储库模式的另一个实现是这样的:
public interface IDbContext
{
IQueryable<Blog> Blogs { get; }
IQueryable<Comments> Comments { get; }
int SaveChanges();
T Attach<T>(T entity) where T : class;
T Add<T>(T entity) where T : class;
T Delete<T>(T entity) where T : class;
}
它调用存储库,并且有单独的查询类。
最好的方法是什么?