【问题标题】:PUT method not saving two entity objectsPUT 方法不保存两个实体对象
【发布时间】:2016-02-19 14:23:51
【问题描述】:

我是实体框架的新手,现在正在努力解决一个问题。我正在使用 MVC api 和 EF6。

我在 PUT 方法中保存了成员详细信息。那工作得很好。

现在,我修改了代码以保存评论(添加了新方法 PublishComment()),但这会破坏代码而没有任何错误消息!调试会话只是挂在 db.SaveChanges() 上。

public void Put(Guid id, MemberListItem item)
    {
using (Context db = new Context())
        {
            Person updPerson = db.People.Find(item.PersonID);

            if (updPerson.PrincipleContact != item.PrincipalMember)
            {                    
                updPerson.PrincipleContact = item.PrincipalMember;
            }
            string memberName = updPerson.GivenName1;
            Guid memberID = updPerson.MemberID;                

            db.Entry(updPerson).State = System.Data.Entity.EntityState.Modified;
            PublishComment(db, memberID, "User Modified. " + memberName + " modified from user profile.");
            db.SaveChanges();
        }


public void PublishComment(Context db, Guid memberID, string comment)
    {
        MemberComment newComment = new MemberComment();
        newComment.CommentID = new Guid();
        newComment.MemberID = memberID;
        newComment.DateAdded = DateTime.Now;
        newComment.Comment = DateTime.Now.ToShortDateString() +": " + comment;
        db.MemberComments.Add(newComment);            

    }

【问题讨论】:

  • 我看不出代码有什么问题。您可以尝试运行(而不是调试)并查看它是否仍在中断。有时 Visual Studio 需要重新启动!
  • ComcopyID 不是数据库中的uniqueidentifier 并具有自动生成的值吗? PersonMemberComment 之间是否有外键?另外,我看不到您实际在哪里使用 idPut 方法。

标签: c# entity-framework api model-view-controller


【解决方案1】:

我认为你的问题在这里:

newComment.CommentID = new Guid(); // eg {00000000-0000-0000-0000-000000000000}

但我不太确定为什么您没有看到重复的密钥异常(这就是它看起来会生成的)

Guid is all 0's (zeros)?

【讨论】:

  • 是的,你是对的。谢谢卢克。我也想知道为什么 EF 没有抛出任何异常。
猜你喜欢
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多