2012-12-05 39 views
0

大約兩年前,我在ADO.NET Entity Framework v2上工作過。我有微弱的回憶。有關ADO.NET Entity Framework 4的幾個基本問​​題

順便說一句,我恰好在一個非常安全的環境中工作,因爲很多鏈接被阻塞,並且沒有多少人能做到。它確實阻礙了學習和工作,不止一點。

因此,我必須依靠這個論壇來解決一些基本問題,我必須重新開始。這一次,我正在研究Entity Framework 4.這是我的問題。

所有這些問題都與電火花生成實體有關,即不是Code First模型。

1)我的理解是否正確?我可以在EDM設計器生成的模型中重命名任何列名稱,並且不會中斷任何操作

2)外鍵在生成的實體類中表示爲導航屬性。維持外鍵關係不需要特別的考慮。我記得在EF的第1版中,您只有ID屬性,並且在版本2中引入了導航IQueryable/IEnumerable/EntityCollection/RelatedEnd屬性。我只需要知道是否需要做任何事情來保留/維護外鍵關係和參考數據的完整性。我想我不需要。確認將會很好。

3)執行存儲過程的所有可能的方法是什麼?我記得 - 在Context.Database對象上使用ExecuteSQL或其他方法,使用EntityClient API的另一種方法,以及在EDM設計器的映射窗口的InsertCommand,SelectCommand等中指定存儲過程名稱的方法。它是否正確?

4)如何在實體的映射窗口中使用這些SelectCommand事物?你只提供存儲過程的名稱或用戶定義的SQL函數嗎?

5)如何從表的子集中創建實體?我只是從表中創建一個實體,然後從設計器中刪除我不需要的列嗎?如果需要(SQL中的NOT NULL)值不在我選擇的子集中,會發生什麼情況?

6)如何從查詢或兩個或多個表的連接中創建表。

回答

1

1)您可以在設計重命名列並沒有什麼應該打破(如果該名稱是有效的)

2)導航屬性指向相關實體。在EF4中添加了外鍵。外鍵屬性基本上暴露了數據庫處理關係的方式。但是,它們很有幫助,因爲您無需加載相關實體只是爲了更改關係 - 您只需將關鍵值更改爲其他實體的ID並保存更改

3)是。您可以直接執行該過程 - 這是針對與CUD(創建/更新/刪除)操作無關的存儲過程。您可以將CUD操作映射到存儲過程,而不是讓EF爲您的CUD操作執行SQL語句。

4)我認爲這有點超出範圍 - 你可能會發現很多博客與圖像如何做到這一點。任何有關英法的書籍都應該有一章(或兩章)。如果遇到特定問題,請將問題發佈到stackoverflow。

5)刪除設計器中的屬性,然後將缺省值提供給S-空間定義。我相信你不能與設計師合作。您需要右鍵單擊edmx文件並使用Xml編輯器打開它並手動編輯它。另請參閱:Issue in EF, mapping fragment,no default value and is not nullable

6)您可以在數據庫中創建視圖,也可以在您的edmx文件中使用E-SQL創建實體集(我認爲這將是隻讀的),或者您可以使用實體分割。這些都可能是一個很大的話題,所以我認爲你應該找到更多關於這些問題的答案,如果你有更具體的問題/問題可以回來。

+0

非常感謝你的回答。這就是我需要的所有幫助來刷新我的記憶。它爲我節省了很多時間。再次感謝。 :-) –