Asp.net mvc 通过Linq向SQL&MVC3创建和添加新记录时删除的记录

Asp.net mvc 通过Linq向SQL&MVC3创建和添加新记录时删除的记录,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我正在尝试向注释表添加新注释,但表中的所有记录都将被删除,我添加的记录除外。 举个例子:假设我在数据库中有一条关于customer 1的注释。我想添加一条新评论 在我的控制器中,我有以下功能: List<CustomerComment> comments = _commentsRepository.CustomerComments.ToList(); CustomerComment newComment = new CustomerComment()

我正在尝试向注释表添加新注释,但表中的所有记录都将被删除,我添加的记录除外。 举个例子:假设我在数据库中有一条关于customer 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=\u commentRespository.GetCustById1。这是导致删除的原因吗?为什么加载时不创建和指定对象


另外一些信息是,我正在使用POCOs和XML映射文件。

也许您不应该将注释添加到内存存储中,而是尝试将新注释添加到数据上下文中。我假设在您的存储库中您有add方法。。。比如_commentsresposition.addnewComment;应该工作


不管怎样,您为什么要将整个客户存储在数据库中,以及存储在用户中?您应该只存储他们的ID否?当您需要读取onky数据以抛出到视图中时,您可能需要额外的数据,例如客户和用户详细信息,请使用dto对象。持久性一方面,查看可能从各种表中填充的特定数据是另一方面…

感谢您的快速响应。我试试你的建议。关于存储customer和user,我不会将它们仅存储在DB中的ID。作为类的一部分的对象用于Linq to SQL跟踪相关对象,并且不会持久化到数据库中。数据库中的comment表只有CustId、UserId、RevisionNumber、comment和CommentDateOK,因此我尝试了您的建议,假设我做得正确,但仍然存在相同的问题。var注释=_DB.GetTable;注释。InsertOnSubmitcomment;comments.Context.SubmitChanges;据我所知,我的映射中存在一个问题。我继续创建了和EF模型,我可能会切换到该模型,并停止使用POCOs和L2S。@莱克特:我没有将POCOs与linq to sql一起使用,但您不能这样做:_DB.GetTable.addcomment;或者_DB.GetTable.InsertOnSubmitcomment?我在代码中执行此操作的方式类似于:_db.CustomerComment.addcomment;