EF6向实体添加新行会引发并发异常

时间:2015-12-02 21:32:37

标签: c# entity-framework concurrency

这就是我的实体的样子:

public class ApplicationUser : IdentityUser
{
    public virtual ProfileModels Profile { get; set; }
    public virtual ICollection<ChatModels> Chats { get; set; }
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
        // Add custom user claims here
        return userIdentity;
    }
}

public class ChatModels
{
    public int Id { get; set; }
    public DateTime Created { get; set; }
    public ICollection<ApplicationUser> Users { get; set; }
    public virtual ICollection<MessageModels> Messages { get; set; }
}
public class MessageModels
{
    public int Id { get; set; }
    public string From { get; set; }
    public string Text { get; set; }
    public DateTime? When { get; set; }
    public virtual ChatModels Chat { get; set; }
}

我有一个chatModels,它有一个对applicationUser的虚拟引用,而applicationUser有一个对chatModel的虚拟引用,在它们之间创建了多对多关系,我在chatModels中也有一个虚拟关系到messageModels。现在我的webapi ChatController里面有我的post方法,现在我只想创建一个像这样的新聊天:

using (var db = new ApplicationDbContext()) {
            db.Chats.Add(new ChatModels {
                Created = DateTime.Now
            });
            db.SaveChanges();
            return Ok();
        }

由于某种原因,这引发了以下异常:

存储更新,插入或删除语句会影响意外的行数(0)。自实体加载以来,实体可能已被修改或删除。

这是在我的本地机器上我是唯一一个在这个项目上工作的人因此不应该是并发的原因。这里有很多答案,但似乎没有一个在我的案例中起作用。知道会发生什么,谢谢

0 个答案:

没有答案