一、目的:
????????Entity Framework Core (EF Core) 支持使用屬性(Attributes)來配置模型和映射數據庫。這些屬性提供了一種聲明性的方式來指定如何將類和屬性映射到數據庫表和列。以下是一些EF Core中常用的屬性:
二、實現
1. [Table]
指定實體映射到的數據庫表的名稱和(可選的)架構。
[Table("Users", Schema = "dbo")]
public class User { }
2. [Column]
指定屬性映射到的列的名稱、數據類型和(可選的)順序。?
[Column("Username", TypeName = "nvarchar(100)")]
public string Name { get; set; }
3. [Key]
指定一個屬性作為實體的主鍵。
[Key]
public int UserId { get; set; }
4. [ForeignKey]
指定一個外鍵關系。?
?
[ForeignKey("UserId")]
public User User { get; set; }
5. [Index]
在EF Core 5.0及更高版本中,用于指定一個屬性或屬性組合上的索引。?
[Index(nameof(Username), IsUnique = true)]
public string Username { get; set; }
?6. [Required]
指定一個屬性是必需的,對應的列將是非空的(NOT NULL)。
?
[Required]
public string Name { get; set; }
7. [MaxLength] 和 [MinLength]
指定字符串或數組屬性的最大和最小長度。?
[MaxLength(100)]
[MinLength(10)]
public string Description { get; set; }
8. [ConcurrencyCheck]
指定一個屬性作為并發檢查的令牌。當嘗試保存實體時,如果數據庫中的值已更改,則會引發并發異常。?
?
[ConcurrencyCheck]
public string ConcurrencyToken { get; set; }
9. [Timestamp]
指定一個屬性作為行版本(row version)。這通常用于樂觀并發控制。?
[Timestamp]
public byte[] RowVersion { get; set; }
10. [Range]
指定數值屬性的最小值和最大值。?
[Range(1, 100)]
public int Age { get; set; }
11. [DatabaseGenerated]
指定屬性的值是由數據庫自動生成的。這對于自增主鍵或默認值很有用
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
?????????這些屬性提供了一種便捷的方式來配置EF Core模型,而無需使用Fluent API。在某些情況下,使用屬性可以使模型配置更加直觀和集中。然而,Fluent API提供了更多的配置選項,對于復雜的模型配置,可能更適合使用Fluent API。
五、需要了解的知識點
創建并配置模型 - EF Core | Microsoft Learn?
創建并配置模型 - EF Core | Microsoft Learn?
System.Windows.Controls 命名空間 | Microsoft Learn
六、源碼地址
GitHub - HeBianGu/WPF-ControlDemo: 示例
GitHub - HeBianGu/WPF-ControlBase: Wpf封裝的自定義控件資源庫
GitHub - HeBianGu/WPF-Control: WPF輕量控件和皮膚庫
七、了解更多
System.Windows.Controls 命名空間 | Microsoft Learn
https://github.com/HeBianGu
HeBianGu的個人空間-HeBianGu個人主頁-嗶哩嗶哩視頻