DbUpdateException - 保存数据库更改时的异常

时间:2015-10-06 15:35:14

标签: c# entity-framework

我收到错误:

  

保存不公开其关系的外键属性的实体时发生错误。 EntityEntries属性将返回null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常。有关详细信息,请参阅InnerException。

我已阅读并且问题似乎是由于数据库中的外键定义不正确。

我正在运行的代码:

foreach (Contact c in toDelete)
{
       DbContext.Contacts.Remove(c);
}

DbContext.SaveChanges();

打算删除已选择删除的联系人。

Contact对象如下所示:

public class Contact
{
    public int Id { get; set; }
    public Organisation Organisation { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public string Mobile { get; set; }
    public DateTime DateJoined { get; set; }
    public string Company { get; set; }
    public string Position { get; set; }
    public virtual IList<Message> Messages { get; set; }
    public virtual IList<Group> Group { get; set; }
    public int? ImportId { get; set; }
    public string ImageURL { get; set; }
    public string Notes { get; set; }

我的上下文类中的相关映射是:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema:false)
    {

    }

    public virtual DbSet<Message> Messages { get; set; }
    public virtual DbSet<Contact> Contacts { get; set; }
    public virtual DbSet<Organisation> Organisations { get; set; }
    public virtual DbSet<Group> Groups { get; set; }
    public virtual DbSet<MessageDeliveryLog> MessageDeliveryLogs { get; set; }


    modelBuilder.Entity<Message>().HasMany(x => x.Contacts).WithMany(x => x.Messages);
    modelBuilder.Entity<Group>().HasMany(x => x.Contacts).WithMany(x => x.Group);
    modelBuilder.Entity<Message>().HasMany(x => x.Groups).WithMany(x => x.Messages);
    modelBuilder.Entity<Contact>().HasMany(x => x.Messages).WithMany(x => x.Contacts);
    modelBuilder.Entity<MessageDeliveryLog>().HasRequired(x => x.Contact);
    modelBuilder.Entity<ContactHistory>().HasRequired(x => x.Contact);
    modelBuilder.Entity<Contact>().HasRequired(x => x.Organisation);
    modelBuilder.Entity<Contact>().HasMany(x => x.Group).WithMany(x => x.Contacts);

base.OnModelCreating(modelBuilder);
}

我对我可能缺乏的东西感到有些困惑。我还在启用了延迟加载和禁用代理创建的上下文中尝试了删除功能,但没有做任何事情。

我相信答案在我的映射中,但我不知道在哪里,我该如何解决这个问题呢?

我可以创建和更新联系人。

0 个答案:

没有答案