我正在用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 :(得分: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有一个名为Authors的表(我认为它确实如此),您可能需要调整布尔值Exists lambda以正确匹配AuthorId