我想弄清楚如何使這項工作在EF中。我有兩個實體Employee
和User
。我需要這樣做,因此User
可以映射到Employee
。如果有映射,那麼它將是1:1。實體框架代碼的第一個關係
基本上這個系統可以被僱員和外部供應商訪問,但我想要一個表來管理登錄:Users
。
如何在流體配置的EF中定義這種實用性?
我想弄清楚如何使這項工作在EF中。我有兩個實體Employee
和User
。我需要這樣做,因此User
可以映射到Employee
。如果有映射,那麼它將是1:1。實體框架代碼的第一個關係
基本上這個系統可以被僱員和外部供應商訪問,但我想要一個表來管理登錄:Users
。
如何在流體配置的EF中定義這種實用性?
你只需要設置簡單流暢的配置:
modelBuilder.Entity<User>()
.HasOptional(u => u.Employee)
.WithRequired(e => e.User);
或以相反的順序:
modelBuilder.Entity<Employee>()
.HasRequired(e => e.User)
.WithOptional(u => u.Employee);
EF將使用Employess的PK的FK到用戶 - 這是EF正確強制性要求使用一對一的關係。在數據註解的情況下,足以與ForeignKey
屬性與User
導航屬性配對,以紀念員工PK:
public class Employee {
[Key, ForeignKey("User")]
public int Id { get; set; }
public virtual User User { get; set; }
}
public class User
{
...
public virtual Employee Employee { get; set; }
}
This tutorial可能會有所幫助。
因此,所有你需要做的就是定義一個可空類型?定義一對多關係時,您是否必須定義導航屬性和Fk? – Sam 2012-08-12 07:16:00
這甚至不會編譯,因爲只有值類型可以爲空。引用類型總是可以爲空,'Employee'是引用類型。 – 2012-08-12 08:14:30
@LadislavMrnka你是對的,謝謝 – 2012-08-12 22:58:54
那麼流暢的配置與註釋相同嗎?另外,在配置一對多關係時,我必須有一個外鍵字段和一個導航屬性嗎?所以在員工 - 用戶的情況下,我必須(在員工上)具有用戶標識和導航屬性用戶嗎? – Sam 2012-08-13 03:33:43
是的流利配置與帶註釋的配置相同。在配置一對多關係時,數據庫中始終有FK,但類中FK屬性的存在因[兩種可能的關聯類型]而異(http://stackoverflow.com/questions/5281974/code-first-independent-關聯-vs-foreign-key-associations/5282275#5282275)在EF中使用。 – 2012-08-13 08:14:11