2013-10-17 37 views
1

我使用實體框架5,和我寫的代碼,第一個模型,我希望在現有的數據庫模式的頂部使用。所以,我無法控制模式設計。如何創建可選外鍵到另一個表,使用自定義的列名,用流利的API?

我有兩個表,mattersusersusers表包含用戶帳戶 - 系統的實際用戶。 matters表包含類似於計劃約會的數據,或者具有這種性質的數據。

matters表的外鍵名爲users,名爲manager。此列只是說:「哎,這users行指定此mattermanager」。這是一個可選的關鍵 - 一個事情不必有一個經理。

users記錄並不需要映射回這些事項性質的模型。

我在映射當前的嘗試是這樣的:

modelBuilder.Entity<Matter>().HasOptional(m => m.ProjectManager).WithRequired().Map(m => m.MapKey("project_manager")); 

就這樣,我想說,Matter有一個可選的FK,對模型的ProjectManager屬性,用戶需要存在,而列名,在matters表稱爲project_manager

雖然這不起作用,並且生成的SQL不正確,但我無法弄清楚如何獲得我正在尋找的東西。如果我要寫的SQL它看起來像這樣

SELECT matters.*, users.* 
FROM matters 
LEFT JOIN users ON matters.project_manager = users.id 

回答

1

我會做什麼,以獲得該SQL是以下的事情。

modelBuilder.Entity<Matter>() 
.HasOptional(m => m.ProjectManager) 
.WithMany(u => u.Matters) 
.HasForeinKey(k=>k.project_manager); 

此代碼應該生成您正在查找的sql語句。 有一個很好的工具,生成代碼第一個表和流暢的api配置,這是EntityFramework Reverse POCO Generator,這對我來說非常有幫助。

相關問題