使用 Fluent API 配置/映射属性和类型
生活随笔
收集整理的這篇文章主要介紹了
使用 Fluent API 配置/映射属性和类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
配置EF使之在映射數據時繞開約定:注釋和Fluent API。注釋僅涵蓋一部分Fluent API功能。
通過重寫DbContext上的OnModelCreating方法來訪問Code First Fluent API。
屬性映射
Property方法用于為每個屬于實體或復雜類型的屬性配置特性。Property方法用于獲取給定屬性的配置對象。配置對象上的選項特定于要配置的類型(IsUnicode只能用于字符串屬性)
配置主鍵
有關主鍵的實體框架約定如下:
要顯示將某個屬性設置為主鍵,可使用HasKey方法。
modelBuilder.Entity<Person>().HasKey(t => t.Id)配置組合主鍵
modelBuilder.Entity<Person>().HasKey(t => new { t.Id ,t.Name});關閉數值主鍵標識
modelBuilder.Entity<Person>().Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);指定屬性的最大長度
如果超出最大長度,將引發DbEntityValidationException異常
modelBuilder.Entity<Person>().Property(t => t.Name).HasMaxLength(50);將屬性配置為必須
modelBuilder.Entity<Person>().Property(t => t.Name).IsRequired();指定不將CLR屬性映射到數據庫中的列
modelBuilder.Entity<Person>().Ignore(t => t.Name);將CLR屬性映射到數據庫中的特定列
以下將Name CLR屬性映射到數據庫中的"myNmae"列
modelBuilder.Entity<Person>().Property(t => t.Name).HasColumnName("myname");配置字符串屬性是否支持unicode內容
默認情況下,字符串為Unicode(sqlserver中的nvarchar),可以使用IsUnicode方法指定字符串為varchar類型
modelBuilder.Entity<Person>().Property(t => t.Name).IsUnicode(false);配置數據庫列的數據類型
modelBuilder.Entity<Person>().Property(t => t.Name).HasColumnType("varchar");將屬性配置為用作并發令牌
modelBuilder.Entity<OfficeAssignment>() .Property(t => t.Timestamp) .IsConcurrencyToken();類型映射
將類型指定為復雜類型
按約定,沒有指定主鍵的類型將被視為復雜類型。在一些情況下,Code First不會檢測復雜類型
modelBuilder.ComplexType<Details>();指定不將CLR實體類映射到數據庫中的表
modelBuilder.Ignore<OnlineCourse>();將CLR實體類型映射到數據庫中的特定表
modelBuilder.Entity<Department>() .ToTable("t_Department");也可以指定架構名稱
modelBuilder.Entity<User>().ToTable("User","System");轉載于:https://www.cnblogs.com/goodlucklzq/p/4612003.html
總結
以上是生活随笔為你收集整理的使用 Fluent API 配置/映射属性和类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HttpClient的释放问题
- 下一篇: 关于 app测试工具