2017-01-10 6 views
0

У меня есть эта установка классов:Entity Framework 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); 

Когда я пытаюсь добавить пользователя и пароль, эф не могу понять порядок обновления. Является ли это проблемой отображения?

ответ

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; } 
}