asp.net mvc - MVC insert/update in controller -


i have following in controller (to insert/or/update news entity). i'm using ef poco

       public class newsviewmodel        {            /// <summary>            /// initializes new instance of <see cref="newsviewmodel"/> class.             /// </summary>            public newsviewmodel()            {                this.news = new news();                this.categories = new list<int>();            }             /// <summary>            /// gets or sets news.            /// </summary>            public news news { get; set; }             /// <summary>            /// gets or sets categories.            /// </summary>            public ienumerable<selectlistitem> selectcategories { get; set; }             /// <summary>            /// gets or sets groupin.            /// </summary>            public ienumerable<int> categories { get; set; }     }       [httppost]     public actionresult edit(newsviewmodel row)     {         if (!modelstate.isvalid)         {             return view(row);         }          // insert record         if (row.news.newsid == 0)         {             foreach (var item in row.categories)             {                 row.news.newscategory.add(this.newscategoryrepository.getrow(item));             }              this.newsrepository.insert(row.news);         }         else         {             // update             var updaterow = this.newsrepository.getrow(row.news.newsid);             updaterow.title = row.news.title;             updaterow.shortdescription = row.news.shortdescription;             updaterow.isactive = row.news.isactive;             updaterow.postdate = row.news.postdate;             updaterow.archivedate = row.news.archivedate;             updaterow.longdescription = row.news.longdescription;             updaterow.newscategory.clear();             foreach (var item in row.categories)             {                 updaterow.newscategory.add(this.newscategoryrepository.getrow(item));             }               this.newsrepository.update(updaterow);         }          this.newsrepository.context.savechanges();         return this.redirecttoaction("index");     } 
  1. is best way perform update? clear categories re-insert , update?
  2. when updating there cleaner way pull out updaterow, reassing values , update it?

first of all. controller responsibility not perform database centric tasks, so:

  • lests repository class make crud operations

then pass object controller repository example can looks repository , controller usage:

public class newsrepository : irepository {     public void saveorupdate(newsviewmodel news)      {          //if isnew save else update     }     //public void delete(newsviewmodel newstodel){}     //public newsviewmodel getbyid(int newsid){} }    public class newscontroller : controller {     private irepository _newsrepository;     public newscontroller(irepository newsrepository)     {         //passed ioc container structuremap or instantiate own here.         _newsrepository = newsrepository;     }      [httppost]     public actionresult edit(newsviewmodel row)     {         _newsrepository.saveorupdate(rowentity);     }  } 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -