2012-04-22 103 views
0

關於如何正確描述這些關係的一些建議將是一個很好的開始。準確描述的東西是尋找解決方案的問題。我有實體用戶和登錄,其中登錄基本上描述了一個用戶的登錄會話。所以,用戶通常有許多登錄實例。這種關係僅在登錄方面用一個必需的單一用戶導航屬性來描述,並且在用戶方面有一個隱含但未聲明的登錄集合。如何映射相同兩個實體之間的兩個關係?

然後,對於其他關係,在登錄授權下創建用戶,因此這種關係在用戶端進行描述,具有登錄導航屬性,並且在登錄時存在隱含的但不是用戶集合側。

我沒有做很多DB建模使用DB工具之外,他們總是隻得到關係適合我,但現在,我不得不爲這些代碼關係首先映射,用流利的映射。我如何描述這兩種關係,原則和依賴方面是什麼,以及這裏的多重性是什麼?

+0

這是否意味着登錄可以與一個用戶相關,但是授權給另一個用戶?這種情況下的授權是什麼?有多少用戶可以登錄授權? – 2012-04-22 12:47:26

+0

用戶擁有創建該用戶的登錄記錄。在這方面,1登錄可以有許多用戶。 當用戶登錄時,就爲該用戶創建1名登錄,但用戶經常登錄,用戶1可以有許多登錄,但是這方面,每次登錄時只有1個用戶。 – ProfK 2012-04-22 13:21:27

回答

0

Code First嘗試連接可能是相同關係的雙方。當你不是有兩個不同的單向關係,那麼你需要明確地告訴代碼先告訴代碼首先這是逆導航屬性不使用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 2012-04-22 16:02:25

相關問題