C# 将UserId用作FK时出现内部异常

C# 将UserId用作FK时出现内部异常,c#,userid,inner-exception,C#,Userid,Inner Exception,对你们中的一些人来说,这可能是一个简单的问题,但我很难解决它 我有一个Message.cs类: public class Message : Audit { public int MessageId { get; set; } public string TextBody { get; set; } public string UserId { get; set; } [F

对你们中的一些人来说,这可能是一个简单的问题,但我很难解决它

我有一个Message.cs类:

    public class Message : Audit
        {
            public int MessageId { get; set; }
            public string TextBody { get; set; }


            public string UserId { get; set; }
            [ForeignKey("UserId")]
            public virtual ApplicationUser User { get; set; }
        }
我使用实体框架进行安全登录等。 当我发布一条消息时,我设置了断点以查看我发送的消息对象是否包含UserId,但是当db.savechange时;调用时,出现错误:

INSERT语句与外键约束\FK_dbo.Messages_dbo.AspNetUsers\u ApplicationUser\u Id\冲突。冲突发生在数据库\aspnet-ChatApp-20140708035313\,表\dbo.AspNetUsers\,列“Id”中。\r\n语句已终止

此外,我正在使用数据适配器和接口来处理我的API。 我的POST MessageDataAdapter如下所示:Edited LOOK

    public Models.Message PostMessage(Models.Message newMessage)
    {
        ApplicationUser user = new ApplicationUser();
        Message message = new Message();
        newMessage.TextBody = message.TextBody;
        newMessage.DateSent = DateTime.Now;
        newMessage.Hidden = message.Hidden;
        newMessage.UserId = user.Id;
        db.Messages.Add(newMessage);
        db.SaveChanges();
        return newMessage;
    }
当我设置断点时,newMessage包含必要的数据以及我登录时的UserId,因为我已经对其进行了身份验证,所以只有用户才能发布到数据库。但是,当它到达db.SaveChanges时,会发生该错误

关于如何解决这个问题有什么想法吗

谢谢大家!

编辑

这就是我所拥有的我想我真正想要做的是能够发布包含登录者用户ID的消息:

    public Models.Message PostMessage(Models.Message newMessage)
    {
        ApplicationUser user = new ApplicationUser();
        Message message = new Message();
        message.TextBody = newMessage.TextBody;
        message.DateSent = DateTime.Now;
        message.Hidden = newMessage.Hidden;
        message.UserId = newMessage.UserId;
        db.Messages.Add(message);
        db.SaveChanges();
        return message;
    }

我的前端HTML有一个隐藏的输入类型,其值为User.Identity.GetUserId,我希望将其与邮件一起发布。

为什么在发布邮件时创建新用户


从db.AspNetUsersor db.Users?中检索旧的?。或者,如果确实需要创建新用户,则还必须将用户添加到db.AspNetUsers存储库中-只有将用户添加到存储库时才会生成id。如果不是,则user.Id属性将是默认值-即整数类型为0。但在AspNetUsers表中没有id=0的用户。此错误说明了这一点。

我已经创建了一个用户,因此对于登录的用户,当他或她发布消息时,我尝试将用户ID与消息一起发布。因此,我的sql表中有一列用户Id,ASP Identity用户已经给了我。现在当我发布时,用户ID为空。。。