2013-01-13 91 views
0

我正在用MVC 4編寫一個博客網站。我在CommentController中添加了以下操作方法來爲文章添加評論。評論具有導航屬性 - 作者(通過電子郵件地址標識)。 我想要做的是如果作者的電子郵件地址已經存在於數據庫中,我只插入新的評論。如果它是一個新的電子郵件地址,那麼還需要創建新的作者。實體框架 - 如果該值已經存在,如何不插入新值

--------下面是我創建的行動--------

 public ActionResult Create(Comment comment) 
      { 
       if (ModelState.IsValid) 
       { 
        comment.CreatedDate = DateTime.Now; 
        myDb.Comments.Add(comment); 

        myDb.SaveChanges(); 
        return RedirectToAction("Details", "Blog", new {id = comment.BlogId }); 
       } 
       return View(comment); 
      } 

--------下面是我的評論類----- ---

public class Comment 
    { 
     [Key] 
     public int CommentId { get; set; } 

     [Required(ErrorMessage="Please enter your comment")] 
     public string CommentContent { get; set; } 
     public DateTime CreatedDate { get; set; } 

     [Required] 
     public int AuthorId { get; set; } 
     public virtual Author Author { get; set; } 

     [Required] 
     public int BlogId { get; set; } 
     public virtual Blog Blog { get; set; } 

    } 

謝謝大家

+0

在我的答案中,一個好的粗略刺傷 - 基本上你需要檢查AuthorId是否是有效的(非null或0),並且它不存在於Authors表中通過使用循環或linq lambda –

回答

1
var authors = myDb.Authors; 
if((comment.AuthorId != null || comment.AuthorId !=0) && !authors.Exists(a=>a.AuthorID == comment.AuthorId)) 
{ 
    //do your creation of new Author and then post the article 
} 
else//author exists 
{ 
    //just post article 
} 

這裏假設你的MYDB有一個名爲作者(我認爲它)表,你可能需要調整布爾已存在lambda來correctl y匹配作者ID

+0

en,非常有幫助。非常感謝Paul – Xavier

+0

沒問題 - 如果它適用於您,請記住將其標記爲答案;) –

+0

此解決方案因競爭條件而受到影響,因爲在檢查authors.Exists(a => a.AuthorID == comment.AuthorId)後,完成之前插入其他請求可能會插入相同的作者 –

相關問題