实体框架 - 违反了多重性约束

时间:2013-12-27 09:15:53

标签: c# .net entity-framework

这个问题已经被问了很多,我尝试了所有的解决方案,但似乎没有用。

模型是:

public class User : IdentityUser
{
  public virtual Profile Profile { get; set; }
}

public class Profile
{
   public virtual string Id { get; set; }
  public virtual User User { get; set; }
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
    modelBuilder.Entity<User>().HasRequired(x => x.Profile).WithRequiredPrincipal(x => x.User);
    modelBuilder.Entity<Profile>().HasRequired(x => x.User).WithRequiredDependent(x => x.Profile);
    base.OnModelCreating(modelBuilder);
}

失败的代码是:

 foreach (var user in context.Users.Include(x => x.Profile).ToList())
 {
     //I commented everything here while debugging  
 }
 context.saveChanges();

因此,在简单选择之后代码失败了....

修改

错误是

  

违反了多重性约束。 'Thanker.Models.DAL.Profile_User'关系的'Profile_User_Source'角色具有多重性1或0..1。

EDIT2 由于某种原因,实体的DefaultConstructor被调用。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

原因是我的Profile和User的默认构造函数正在对实体进行更改。由于某种原因,即使在进行简单的secect时也会调用默认构造函数。