2011-05-12 62 views
0

所以我有...Code First Entity Framework爲什麼會生成外鍵?

public class User 
{ 
    public int ManagerId { get; set; } 
    public Manager Manager { get; set; } 
} 

public class Manager 
{ 
    public User User { get; set; } 
} 

modelBuilder.Entity<User>() 
.HasOptional(x => x.Manager) 
.WithOptionalDependent(x => x.User); 

因此,用戶有一個可選的經理和經理可能會或可能不會有一個用戶。這適用於該管理器對用戶沒有外鍵,但用戶對管理器具有可空的外鍵。但是它產生了外鍵並將ManagerId視爲一個常規屬性。我該如何解決?

乾杯,伊恩。

+0

刪除我的答案,因爲它是錯的。我不認爲這是一對一的關係,這是拉迪斯拉夫回答中解釋的另一個故事。 – Slauma 2011-05-12 11:05:20

回答

1

這是一對一的關係。它只有在外鍵構建在主鍵上時纔有效。你需要像這樣的東西:

public class User 
{ 
    [Key, ForeingKey("Manager")] 
    public int Id { get; set; } 
    public Manager Manager { get; set; } 
} 

public class Manager 
{ 
    public int Id { get; set; } 
    public User User { get; set; } 
} 

如果經理有一個用戶,用戶必須具有與經理相同的PK值。您將無法在雙方定義可選的關係,因爲它會違反FK。在流利的映射中,你應該這樣做:

modelBuilder.Entity<Manager>() 
      .HasOptional(m => m.User) 
      .WithRequired(u => u.Manager); 
相關問題