我有User
和Profile
实体,他们有1-1关系。
用户实体和配置
public class User
{
public int ID { get; set; }
public virtual Profile Profile { get; set; }
}
public class UserConfig : EntityTypeConfiguration<User>
{
public UserConfig()
{
HasRequired(x => x.Profile).WithRequiredPrincipal(x => x.User);
}
}
个人资料实体和配置
public class Profile
{
public int ID { get; set; }
public virtual User User { get; set; }
}
public class ProfileConfig : EntityTypeConfiguration<Profile>
{
public ProfileConfig()
{
HasRequired(x => x.User).WithRequiredDependent(x => x.Profile).Map(x => x.MapKey("UserID")).WillCascadeOnDelete(true);
}
}
但是,当我尝试删除用户列表时,我会在下面看到此例外:
List<User> users = _user.Where(x => m.SelectedUsersID.Contains(x.ID)).ToList();
users.ForEach(x => _user.Remove(x));
A relationship from the 'Profile_User' AssociationSet is in the 'Deleted' state. Given multiplicity constraints, a corresponding 'Profile_User_Source' must also in the 'Deleted' state.
我不知道出了什么问题,请帮忙:)
答案 0 :(得分:0)
您正在删除用户但未将用户配置为级联删除。这意味着不会删除配置文件并违反数据库的完整性。 EF会阻止数据库,从而引发错误。
您也应该配置为级联删除。
答案 1 :(得分:0)
好的,我可以通过删除这两个实体来解决这个问题。这意味着我必须删除Profile
和User
两者
users.ForEach(x => _profile.Remove(x.Profile));
users.ForEach(x => _user.Remove(x));