一步一步學EF系列二【Fluent API的方式來處理實體與數據表之間的映射關系】


       EF里面的默認配置有兩個方法,一個是用Data Annotations(在命名空間System.ComponentModel.DataAnnotations;),直接作用於類的屬性上面,還有一個就是Fluent API,通過新增相應的配置類來覆蓋默認配置另外。我們主要學習Fluent API,Data Annotations可以自行去學習一下。

      補充一下為什么要用Fluent API

      使用DataAnnotation非常簡單,但對於EntityFramework中的特性,就要在實體類中引入EntityFramework程序集,但實體類最好能是保持與架構無關性的POCO類,才能更具通用性。所以,最好是在數據層中使用FluentAPI在數據層中進行實體類與數據庫之間的映射工作。

       那怎么直接就動手吧!

一、修改DbContext

代碼和之前的是一樣的,只是多了個重新方法

截圖

二、簡單的例子

 我們需要在OnModelCreating添加配置。

截圖

下面的這些最后每個都親自試一下 ,具體的也沒有太多的難度

  1. ToTable - TableAttribute:配置此實體類型映射到的表名
  2. HasColumnName - ColumnAttribute:配置用於存儲屬性的數據庫列的名稱
  3. HasForeignKey - ForeignKeyAttribute:將關系配置為使用在對象模型中的外鍵屬性。如果未在對象模型中公開外鍵屬性,則使用Map方法
  4. Ignore - NotMappedAttribute:從模型中排隊某個屬性,使該屬性不會映射到數據庫
  5. HasRequired:通過此實體類型配置必需關系。除非指定此關系,否則實體類型的實例將無法保存到數據庫。數據庫中的外鍵不可為null。
  6. HasOptional:從此實體類型配置可選關系。實體類型的實例將能保存到數據庫,而無需指定此關系。數據庫中的外鍵可為null。
  7. HasMany:從此實體類型配置一對多關系。
  8. WithOptional:將關系配置為required:optional。(required:0…1端的1,表示必需,不可為null;optional:0…1端的0,表示可選,可為null。下同)
  9. WithOptionalDependent:將關系配置為optional:optional。要配置的實體類型將成為依賴對象,且包含主體的外鍵。作為關系目標的實體類型將成為關系中的主體。
  10. WithOptionalPrincipal:將關系配置為optional:optional。要配置的實體類型將成為關系中的主體。作為關系目標的實體類型將成為依賴對象,且包含主體的外鍵。
  11. WithRequired:將關系的指定端配置為必需的,且在關系的另一端有導航屬性。
  12. WithRequiredDependent:將關系配置為required:required。要配置的實體類型將成為依賴對象,且包含主體的外鍵。作為關系目標的實體類型將成為關系中的主體。
  13. WithRequiredPrincipal:將關系配置為required:required。要配置的實體類型將成為關系中的實體。作為關系目標的實體類型將成為依賴對象,且包含主體的外鍵。
  14. WillCascadeOnDelete:配置是否對關系啟用級聯刪除。
  15. Map:將關系配置為使用未在對象模型中公開的外鍵屬性。可通過指定配置操作來自定義列和表。如果指定了空的配置操作,則約定將生成列名。如果在對象模型中公開了外鍵屬性,則使用 HasForeignKey 方法。並非所有關系都支持在對象模型中公開外鍵屬性。
  16. MapKey:配置外鍵的列名。
  17. ToTable:配置外鍵列所在表的名稱和架構。

三、運行代碼

如果你整個試驗了,應該會在配置某個關系的時候出現一個問題,請看下一篇。

我的文章沒有太多個理論和官方語言,前面的幾篇都是很通俗,已最容易理解的方式進行。當然也只適用初學者。

 

大家也可以加入QQ群進行交流(435498053)。輕松做生意外貿軟件

作者:STONE劉先生 出處:http://www.cnblogs.com/liupeng/

本文版權歸作者和博客園共有,歡迎轉載。未經作者同意下,必須在文章頁面明顯標出原文鏈接及作者,否則保留追究法律責任的權利。
如果您認為這篇文章還不錯或者有所收獲,可以點擊右下角的【推薦】按鈕,因為你的支持是我繼續寫作,分享的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM