2012-04-22 4 views
0

이러한 관계를 올바르게 설명하는 방법에 대한 조언은 훌륭한 시작일 것입니다. 정확히 설명 된 것은 솔루션을 찾는 데 문제가되는 것입니다. 엔티티 User와 Login이 있습니다. Login은 기본적으로 한 사용자의 로그인 세션을 설명합니다. 따라서 사용자에게는 일반적으로 많은 Login 인스턴스가 있습니다. 이 관계는 필수 단일 사용자 탐색 속성을 사용하여 로그인 측면에서만 설명되며 사용자 측면에는 암시 적이지만 선언되지 않은 로그인 컬렉션이 있습니다.두 엔티티간에 두 관계를 어떻게 매핑합니까?

다른 관계의 경우 사용자는 로그인 권한으로 생성되므로이 관계는 로그인 탐색 속성을 사용하여 사용자 측에 설명되며 로그인에는 사용자 컬렉션이 아닌 암시 적 컬렉션이 있습니다 측면.

DB 도구를 사용하지 않고 DB 모델링을 많이하지 않아도 항상 관계를 얻을 수 있지만 지금은 유창한 매핑을 사용하여 코드에 대한 이러한 관계를 매핑해야합니다. 어떻게이 두 관계, 원리와 종속면이 무엇인지, 그리고 여기에 다중도가 무엇인지 설명 했습니까?

+0

이 그 로그인을 의미 하는가 수 한 사용자와 관련이 있지만 다른 사용자에게 권한이 있습니까? 이 경우 허가는 무엇입니까? 얼마나 많은 사용자가 로그인 승인을받을 수 있습니까? –

+0

사용자는 생성 된 로그인 정보가 기록되어 있습니다. 이 점에서 1 로그인에는 많은 사용자가있을 수 있습니다. 사용자가 로그인하면 해당 사용자에 대해 1 개의 로그인이 생성되지만 사용자가 자주 로그인하면 1 명의 사용자가 많은 로그인을 가질 수 있지만이 점에 유의하십시오. 각 로그인에는 1 명의 사용자 만 있습니다. – ProfK

답변

0

코드 첫 번째는 아마 같은 관계에있는 두면을 연결하려고 시도합니다. 대신 두 개의 서로 다른 단방향 관계가있는 경우에, 당신은 역 탐색 속성이 인수없이 WithMany()를 사용하여 존재하지 않음을 명시 적으로 코드 첫 번째 이야기로 코드 먼저 이것을 말할 필요가 :

public class User 
{ 
    public int Id { get; set; } 
    public int LoginId { get; set; } 
    public virtual Login Login { get; set; } 
} 

public class Login 
{ 
    public int Id { get; set; } 
    public int UserId { get; set; } 
    public virtual User User { get; set; } 
} 

public class SomeContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
    public DbSet<Login> Logins{ get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>() 
      .HasRequired(e => e.Login) 
      .WithMany() 
      .HasForeignKey(e => e.LoginId); 

     modelBuilder.Entity<Login>() 
      .HasRequired(e => e.User) 
      .WithMany() 
      .HasForeignKey(e => e.UserId); 
    } 
} 
+0

고마워, 그게 내가 찾고있는 것 같아. – ProfK

관련 문제