在ASP.NET MVC 3中的两个表中插入记录

时间:2014-05-06 12:25:20

标签: asp.net database asp.net-mvc-3

大家好,我上周开始使用MVC ASP.NET,并且我在这方面取得了很好的进展。现在我有一些想法 创建控件,附加视图,数据库(保存,获取记录),模型中的类等。

直到现在我可以用一个对象(强烈地)连接打开页面

public ActionResult Edit(int id) 
{
    Book book = db.BOOKS.Find(id);
    return View(book);
}

并将其发送回控制器,并在文本字段中添加信息并保存。

[HttpPost]
public ActionResult Edit(Book book) 
{
    if (ModelState.IsValid) 
    {
        db.Entry(book).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(book);
}

直到现在一切都很好。这是真正的问题。

假设我还有一个包含Book.Review的表。

Int ID (identity)
Int BookID 
Varchar comments

现在我想要的是用户打开一个页面并想要对书籍添加一些评论。所以这个评论应该去BookReview表,书籍ID和Book相关数据应该去Book表。所以我想象中的图片就像是

[HttpPost]
public ActionResult Edit(Book book, BookReview review) 
{
    if (ModelState.IsValid) 
    {
        db.Entry(book).State = EntityState.Modified;
    db.Entry(review).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(book);
}

下次当用户点击同一本书时,他/她可以看到书籍信息以及添加评论。

我不知道如何使用MVC

在两个表中插入记录

1 个答案:

答案 0 :(得分:1)

你有没有试过这样的东西?

db.Books.AddObject(book);
db.Reviews.AddObject(review);
db.SaveChanges();

我认为您的问题与实体框架以及“Linq to entities”更相关。这可能有助于您进行下一次研究。

不过,您还需要将评论绑定到视图。

我认为最好的方法是创建一个ViewModel。

您可能想将其称为BookAndReviewViewModel,并使用它:

public class BookAndReviewViewModel {
   public Book book {get; set;}
   public BookReview bookReview {get; set;}
}

然后在你的控制器中使用它:

 [HttpPost]
 public ActionResult Edit(BookAndReviewViewModel bookAndReview) 
 {
     if (ModelState.IsValid) 
     {
         db.Books.AddObject(bookAndReview.book);
         db.Reviews.AddObject(bookAndReview.bookReview);
         db.SaveChanges();
         return RedirectToAction("Index");
     }
     return View(bookAndReview);
}