笔记:在Entity Framework Core 中,常用Attribute有哪些

一、目的:

        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个人主页-哔哩哔哩视频

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值