我收到错误:
保存不公开其关系的外键属性的实体时发生错误。 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);
}
我对我可能缺乏的东西感到有些困惑。我还在启用了延迟加载和禁用代理创建的上下文中尝试了删除功能,但没有做任何事情。
我相信答案在我的映射中,但我不知道在哪里,我该如何解决这个问题呢?
加
我可以创建和更新联系人。