2017-01-10 137 views
0

我有这个设置的类别:实体框架1〜1/1 *

public class User 
{ 
    public int Id { get; set; } 
    public string LoginName { get; set; } 
    public int CurrentPasswordId { get; set; } 
    public virtual ArchivedPassword CurrentPassword {get;set;} 
    public virtual ICollection<ArchivedPassword> UsedPasswords { get; set; } 
} 
public class ArchivedPassword 
{ 
    public int Id { get; set; } 

    public string Hash { get; set; } 

    public int UserId { get; set; } 

    public virtual User User { get; set; } 

    public virtual ICollection<User> Users { get; set; } 
} 
ModelBuilder.Entity<ArchivedPassword>() 
    .HasMany(e => e.Users) 
    .WithRequired(e => e.CurrentPassword) 
    .HasForeignKey(e => e.CurrentPasswordId) 
    .WillCascadeOnDelete(false); 

ModelBuilder.Entity<User>() 
    .HasMany(e => e.UsedPasswords) 
    .WithRequired(e => e.User) 
    .HasForeignKey(e => e.UserId) 
    .WillCascadeOnDelete(false); 

当我尝试添加一个用户和密码,EF不容找出更新顺序。 这是一个映射问题吗?

回答

0

我不是专家数据库。但我认为你不能让你能成功,你想为下面的代码有什么相同tables.But两个不同的外键

public class UserContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
    public DbSet<Password> Paswords { get; set; } 

} 
public class User 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    [NotMapped] 
    public Password Password 
    { 
     get 
     { 
      return Passwords.ElementAt(Passwords.Count - 1); 
     } 
    } 

    public virtual ICollection<Password> Passwords { get; set; } 
} 

public class Password 
{ 
    public int Id { get; set; } 

    public string Hash { get; set; } 

    public virtual User User { get; set; } 
}