0

我正在尝试使用 asp .net mvc 构建博客应用程序。该博客运行良好,但我并不厌倦介绍存储库模式。我从下面的代码开始 - 即我可以添加博客、评论和编辑/删除它们。但是,我稍微更改了代码,一切都失败了。我不明白出了什么问题。

我从这段代码开始,它有效:

博客存储库:

public interface IBlogRepository
{
    IQueryable<Blog> FindAllBlogs();
    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 : IBlogRepository
    {
     ....
     public void Add(Blog blog)
        {
            db.Blogs.Add(blog);
            db.SaveChanges();
        }
     ....
}

博客控制器:

    IBlogRepository blogrepository;

    public BlogController()
    {
        blogrepository = new BlogRepository();
    }

     .....
    public ActionResult Create(Blog blog)
    {
        if (ModelState.IsValid)
        {
            blog.Content = Regex.Replace(blog.Content, " {2,}", x => x.Value.Replace(" ", "&nbsp;"));
            blog.Content = blog.Content.Replace("\n", "<br/>");
            blogrepository.Add(blog);
            return RedirectToAction("Index");  
        }

        return View(blog);
    }
    .....
   }

更改和不起作用的代码是:

博客存储库:

public interface IBlogRepository
{
    IQueryable<Blog> FindAllBlogs();
    Blog GetBlog(int id);
    T Update<T>(T entity) where T : class;
    T Add<T>(T entity) where T : class;
    T Delete<T>(T entity) where T : class;
}

博客存储库:

public class BlogRepository : BlogDb, IBlogRepository {
...
        T INPLHBlogRepository.Add<T>(T entity)
        {
            return Set<T>().Add(entity);
        }
...
}

我打破了什么?非常感谢

4

1 回答 1

1

So you have switched to an explicit interface implementation of the add method. It looks like you have a typo.

With explicit implementation.

public class BlogRepository : BlogDb, IBlogRepository {
...
        T IBlogRepository.Add<T>(T entity)
        {
            return Set<T>().Add(entity);
        }
...
}

And without

public class BlogRepository : BlogDb, IBlogRepository {
...
        public T Add<T>(T entity)
        {
            return Set<T>().Add(entity);
        }
...
}
于 2012-06-30T22:12:42.153 回答