2012-06-30 34 views
0

我正在嘗試使用asp .net mvc構建一個博客應用程序。博客工作正常,但我並沒有厭倦介紹存儲庫模式。我從下面的代碼開始,即可以添加博客,評論和編輯/刪除它們。不過,我稍微改了一下代碼,一切都結束了。我不明白什麼是錯的。評論沒有更新+ asp .net mvc +存儲庫模式

我開始使用此代碼,它的工作原理:

IBlogRepository:

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); 
} 

BlogRepository:

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); 
    } 
    ..... 
    } 

昌e和不工作的代碼是:

IBlogRepository:

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; 
} 

BlogRepository:

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

我是怎麼突破?很多謝謝

回答

1

所以你已經切換到add方法的顯式接口實現。看起來你有一個錯字。

顯式實現。

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

而且沒有

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