2012-11-22 86 views
0

我在兩個SQL表之間創建了一個外鍵約束。然後我進入了該項目的EDMX並選擇了「來自數據庫的更新模型」。但是,我的圖表顯示錶之間沒有行,也沒有任何導航屬性。我關心線條的唯一原因是因爲線條,導航屬性和EF理解的關係都以某種方式綁定在一起;我不想因爲數據完整性而搞砸了,因爲EF對關係有不同的看法。通過SQL外鍵關係獲取實體框架的導航屬性

問題:EF如何從數據庫中導出導航屬性?如果狀態在SQL本身內部維護,那麼需要向Azure SQL服務器發出哪些額外的命令才能使其明白?還是我必須手動修改EDMX?

這裏是我創建的外鍵連接兩個表

ALTER TABLE [dbo].[Employee] 
WITH CHECK ADD CONSTRAINT [FK_Employee_Office_City] FOREIGN KEY([City]) 
REFERENCES [dbo].[Office] ([City]) 
ON DELETE CASCADE 
GO 

ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Office_City] 
GO 

重要的一塊:父表(辦公室)的[城市]列不是主鍵 - 但它是一個UNIQUE INDEX列。

此外,我們首先使用EF代碼,但隨着項目的發展,我們首先切換到數據庫優先。我們不得不在EDMX的數據庫中完全重新生成EDMX。而且由於舊錶格仍具有良好的導航屬性(EDMX重新生成後),該狀態必須以某種方式存儲在數據庫中以供EF重新創建。只是不知道如何...

回答

1

它不會工作,因爲EF不理解唯一的密鑰。如果要映射關係,主體表中的鍵必須是主鍵。

+0

好的,我很擔心。 EF圖中缺少導航屬性的主要缺點是什麼?我假設在SQL中有外鍵約束,關係完整性會好的,對嗎? – DeepSpace101

+0

主要缺點是您必須自己處理相關對象。在加載/保存過程中,EF沒有執行automagic。 –

+0

我放棄了約束條件,將原則表中的關鍵字作爲主鍵,並添加了約束並從數據庫中刷新了模型。仍然沒有線路!任何其他要求? – DeepSpace101