EntityFramework6.X 之 Fulent
Fulent
Fulent是配置領域模型類的另一個方法,它比DataAnnotations提供更多的配置,提供以下三種方法映射
| Mappings | To Database |
| Model-Wide Mapping | 設置默認架構,設置經典約束 |
| Entity Mapping | 映射單個或多個表格或架構,映射復雜類型,繼承策略 |
| Property Mapping | 屬性、屬性名、列類型、非空或非空列、列寬、列序列;并發列;外鍵列;配置關系 |
通常Fulent是在dbContext類或派生類中重寫OnModelCreating方法定義,如下假設已經定義了Student領域類和Standard領域類
?
?
EntityTypeConfiguration Class
該類是一個非常重要的fluent API函數,提供了重要的方法去配置實體類和屬性,通過Entity<TEntity>()方法調用
? ?
| Method Name | Description |
| HasKey<TKey> | 配置實體的主鍵約束 |
| HasMany<TTargetEntity> | 從這個實體開始配置一個多對多的關系 |
| HasOptional<TTargetEntity> | 從這個實體配置一個可選關系,沒有被關系指定的一方將可以保存到數據庫中,外鍵可以為空 |
| HasRequired<TTargetEntity> | 從這個實體配置一個必須關系,只有在確定關系的情況下實體類型實例才能被保存到數據庫,否則外鍵列將會空 |
| Ignore<TProperty> | 從領域模型中排除一個屬性,該屬性將不映射到數據庫中 |
| Map | 允許高級配置該模型的數據庫模型 |
| Property<T> | 配置一個已經定義的類型的結構屬性 |
| ToTable | 將領域類映射到數據庫中的表名 |
1)????? 將類型指定為復雜類型
按約定,沒有指定主鍵的類型將被視為復雜類型
Eg: modelBuilder.ComplexType<Details>();
2)????? 指定不將CLR實體類型映射到數據庫中的表
簡單說就是不將實體類型映射到數據庫表中
Eg: modelBuilder.Ignore<OnlineCourse>();
Entity Mappings
可設置默認的架構
?
也可將實體配置到制定表
?
將一個實體類配置到多個表中
?
Property Mappings
?
Property用于為每個屬于實體或復雜類型的屬性配置特性。Property方法用于獲取給定屬性的配置對象。配置字符串屬性是否支持Unicode內容,默認情況下,字符串為Unicode(SQLServer中的nvarchar),可以使用IsUnicode方法指定字符串應為varchar類型
Eg:modelBuilder.Entity<Department>().Property(t=>t.Name).IsUnicode(false);
先將領域類定義好
?
1)????? 配置主鍵約束和組合主鍵
?
2)????? 配置列名、類型和順序,不僅僅可以通過方法,也可以通過HasColumnAnnotation配置
?
3)????? 配置空和非空列
?
4)????? 配置列寬
?
5)????? 配置并發列
?
?
轉載于:https://www.cnblogs.com/Terrece/p/6892591.html
總結
以上是生活随笔為你收集整理的EntityFramework6.X 之 Fulent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度网盘使用Motrix下载资源
- 下一篇: 黑苹果intel 9560ac网卡成功驱