这个问题已经被问了很多,我尝试了所有的解决方案,但似乎没有用。
模型是:
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被调用。有什么想法吗?
答案 0 :(得分:2)
原因是我的Profile和User的默认构造函数正在对实体进行更改。由于某种原因,即使在进行简单的secect时也会调用默认构造函数。