通过Linq To SQL& amp;创建和添加新记录时删除的记录MVC3

时间:2011-07-10 17:04:55

标签: asp.net-mvc linq-to-sql

我正在尝试向评论表添加新评论,但除了我添加的记录之外,表中的所有记录都将被删除。 举个例子:假设我在客户1的数据库中有一条现有的评论。我想添加一条新评论。

在我的控制器中,我有以下内容:

  List<CustomerComment> comments = _commentsRepository.CustomerComments.ToList();


            CustomerComment newComment = new CustomerComment()
            {
                CustId = 1,
                RevisionNumber = revNumber,
                Comment = comment,
                Customer = _commentRespository.GetCustById(1),
                CommentDate = DateTime.Now,
                UserId = 24,
                Users = _commentsRepository.GetUserById(24)
            };


            comments.Add(newComment);

            _commentsRepository.SaveComment();

在我的存储库中,我有以下内容:

public Int32 SaveComment(CustomerComment comment)
{
    try
    {

        _DB.SubmitChanges();
    }
    catch
    {
        throw;
    }

    return comment.CommentId;

}

在逐步完成之后,在我创建新注释并进入SaveComment方法之前,我看不到对数据的任何更改。奇怪的是,它显示了表中已有的删除注释和插入的新注释。

不理解为什么它认为应该删除现有的评论。

我也尝试过InsertOnSubmit,但它做了同样的事情,所以我把它拿出来了。

我注意到的一件事是在控制器(注释)中加载后的现有注释将customer对象设为null。当我创建新注释时,我将客户分配给新注释(Customer = _commentRespository.GetCustById(1)。)这是否导致删除以及为什么在加载时不创建和分配对象。

一些额外的信息是我正在使用POCO和XML映射文件。

1 个答案:

答案 0 :(得分:0)

也许您不应该将注释添加到内存存储中尝试将新注释添加到数据上下文中。我假设在你的存储库中你有add方法......所以像_commentsRepository.add(newComment); shoukd work ...

无论如何,为什么要将整个客户存储在数据库中以及用户?你应该只存储他们的ID?当您需要读取要放入视图的onky数据时,您可能需要其他数据,例如客户和用户详细信息,请使用dto对象。坚持一件事,用可能从各种表中填充的某些数据查看数据是另一回事......