2012-08-30 49 views
1

我想從頭開始創建一個項目。我將使用asp .net mvc4(帶有asp網絡api)以及用於數據訪問的實體框架(所有最新技術)建議從頭開始一個實體框架代碼第一個項目

由於這是一個全新的開始,我一直在考慮將我的設計集中在我的模型上而不是首先創建數據庫然後創建EF模型,所以我儘管會採用代碼優先的方法。

代碼優先的問題(據我所知)是你失去了EF在模型優先場景中爲你做的所有腳手架(設計支持,輕鬆生成和維護實體關係1-1,1- * ,-等) 問題是:在設計我的模型時,我可以使用什麼工具或模板或片段或其他方法使我的生活更輕鬆?我希望這個過程儘可能無痛苦,因爲它涉及很多重複(例如,FK關係總是相同的) 我應該使用DbContext還是其他?有什麼方法可以首先啓動代碼,但同時維護一個edmx模型,還是那些是互斥的?

謝謝!

+0

聽起來像你只是想使用模型第一。 Code First適用於那些不想讓模型設計師惹惱的人。 –

+0

這很好,我沒有與模型設計師混淆,實際上,我更喜歡儘可能多地控制我所擁有的,並以我的模型爲中心。但是,無論如何,我需要設置所有東西:類,約束等之間的關係,這些關係最終會在生成的數據庫中結束。我想知道的是我可以使用哪些工具來幫助腳手架重複執行任務 –

+0

例如,通過集合屬性和外鍵屬性在您構建的類中定義關係。您可以使用DataAnnotations或Fluent Configuration來爲數據庫生成定義各種約束和提示。至於腳手架的重複性任務,這確實超出了EF的範圍。 –

回答

3

EF Code First的偉大之處在於您不需要任何腳手架。您不需要EDMX模型,您甚至不需要指定關係的確切性質,它都基於約定。例如,你的類必須有一個名爲Id的屬性,它將被視爲表的主鍵。所有基於字符串的字段生成爲nvarchar(MAX)。當然,有些約定可能並不是你想要的,Code First通過可插入約定來支持這個約定(你可以刪除大多數約定並創建你自己的約定)

你應該做一些基本教程,以瞭解Code First流程起作用,因爲它與Db First方法完全不同。

+0

除非您指定最大字符串長度,否則「字符串」字段實際上以「nvarchar(MAX)」生成。否則,完全正確! +1在預期的小錯誤被修復:) –

+0

大聲笑,謝謝,我想它可能是NHibernate的默認生成它們爲255。 –

+0

謝謝Jaimal!你能指出我一些很好的EF5代碼的第一個教程嗎? (除了msdn) –

相關問題