EF里面的默認配置有兩個方法,一個是用Data Annotations(在命名空間System.ComponentModel.DataAnnotations;),直接作用於類的屬性上面,還有一個就是Fluent API,通過新增相應的配置類來覆蓋默認配置另外。我們主要學習Fluent API,Data Annotations可以自行去學習一下。
補充一下為什么要用Fluent API
使用DataAnnotation非常簡單,但對於EntityFramework中的特性,就要在實體類中引入EntityFramework程序集,但實體類最好能是保持與架構無關性的POCO類,才能更具通用性。所以,最好是在數據層中使用FluentAPI在數據層中進行實體類與數據庫之間的映射工作。
那怎么直接就動手吧!
一、修改DbContext
代碼和之前的是一樣的,只是多了個重新方法
二、簡單的例子
我們需要在OnModelCreating添加配置。
下面的這些最后每個都親自試一下 ,具體的也沒有太多的難度
- ToTable - TableAttribute:配置此實體類型映射到的表名
- HasColumnName - ColumnAttribute:配置用於存儲屬性的數據庫列的名稱
- HasForeignKey - ForeignKeyAttribute:將關系配置為使用在對象模型中的外鍵屬性。如果未在對象模型中公開外鍵屬性,則使用Map方法
- Ignore - NotMappedAttribute:從模型中排隊某個屬性,使該屬性不會映射到數據庫
- HasRequired:通過此實體類型配置必需關系。除非指定此關系,否則實體類型的實例將無法保存到數據庫。數據庫中的外鍵不可為null。
- HasOptional:從此實體類型配置可選關系。實體類型的實例將能保存到數據庫,而無需指定此關系。數據庫中的外鍵可為null。
- HasMany:從此實體類型配置一對多關系。
- WithOptional:將關系配置為required:optional。(required:0…1端的1,表示必需,不可為null;optional:0…1端的0,表示可選,可為null。下同)
- WithOptionalDependent:將關系配置為optional:optional。要配置的實體類型將成為依賴對象,且包含主體的外鍵。作為關系目標的實體類型將成為關系中的主體。
- WithOptionalPrincipal:將關系配置為optional:optional。要配置的實體類型將成為關系中的主體。作為關系目標的實體類型將成為依賴對象,且包含主體的外鍵。
- WithRequired:將關系的指定端配置為必需的,且在關系的另一端有導航屬性。
- WithRequiredDependent:將關系配置為required:required。要配置的實體類型將成為依賴對象,且包含主體的外鍵。作為關系目標的實體類型將成為關系中的主體。
- WithRequiredPrincipal:將關系配置為required:required。要配置的實體類型將成為關系中的實體。作為關系目標的實體類型將成為依賴對象,且包含主體的外鍵。
- WillCascadeOnDelete:配置是否對關系啟用級聯刪除。
- Map:將關系配置為使用未在對象模型中公開的外鍵屬性。可通過指定配置操作來自定義列和表。如果指定了空的配置操作,則約定將生成列名。如果在對象模型中公開了外鍵屬性,則使用 HasForeignKey 方法。並非所有關系都支持在對象模型中公開外鍵屬性。
- MapKey:配置外鍵的列名。
- ToTable:配置外鍵列所在表的名稱和架構。
三、運行代碼
如果你整個試驗了,應該會在配置某個關系的時候出現一個問題,請看下一篇。
我的文章沒有太多個理論和官方語言,前面的幾篇都是很通俗,已最容易理解的方式進行。當然也只適用初學者。
作者:STONE劉先生 出處:http://www.cnblogs.com/liupeng/
本文版權歸作者和博客園共有,歡迎轉載。未經作者同意下,必須在文章頁面明顯標出原文鏈接及作者,否則保留追究法律責任的權利。
如果您認為這篇文章還不錯或者有所收獲,可以點擊右下角的【推薦】按鈕,因為你的支持是我繼續寫作,分享的最大動力!