EFCore注解

2 篇文章 1 订阅
2 篇文章 0 订阅
  1. [Table]

Table特性可以应用于一个领域类上面,用来在数据库中生成相应名称的数据表。它重写了EF 6和 EF Code 中默认的约定,根据默认约定,EF 6和EF Core创建的表的名称是实体名称+s(或者es),并且创建的数据表的列名称和实体属性名称一样。

[Table("StudentInfo",Schema="Sc")]
public class Student
{
    public int StudentID { get; set; }
 
    public string Name { get; set; }
}

如上Student类:数据库生成的表名为Sc.StudentInfo

* Table Attribute: [Table(string name, Properties:[Schema = string])

name:数据表的名称

Schema:数据库的模式名称

2. [Key]

Key标示字段为主键,如果多个字段用Key标示,则会默认生成联合主键。

3. [Column]

Column特性,可以应用于实体的一个或者多个属性上面,用来配置数据库中数据表中列的列名、列的数据类型以及列的先后顺序。

[Table("StudentInfo",Schema="Sc")]
public class Student
{
    public int StudentID { get; set; }
 
    public string Name { get; set; }
    
    [Column("CreateTime",TypeName="Date")]
    public DateTime AddTime { get; set; }
}

如上AddTime列:数据库生成的字段将是“CreateTime”而不是实体类中的AddTime,类型是“Date”而不是默认的DateTime。

* Column Attribute: [Column (string name, Properties:[Order = int],[TypeName = string])

name:表的数据列的名称

Order:列的顺序,从索引0开始

TypeName:列的类型名称

4. [Required]

Required特性可以应用于一个实体的一个或多个属性上面。EF将会为标识Required特性的属性,在数据库表的列中生成不为空(not null)的列

5. [Index]

用来在特定的列上面创建索引,默认情况下,索引的名称是Idx_{属性的名称}。

[Table("StudentInfo",Schema="Sc")]
public class Student
{
    public int StudentID { get; set; }
    
    [Index("Idx_Student_Name",IsClustered=true,IsUnique=true)]
    public string Name { get; set; }
    
    [Column("CreateTime",TypeName="Date")]
    public DateTime AddTime { get; set; }
}

如上Name字段,数据库创建的索引名称“Idx_Student_Name”,为聚合索引,唯一索引。

* Column Attribute: [Index(string name, Properties:[IsClustered = bool],[IsUnique= bool])

name:索引名称

IsClustered : 是否是建聚合索引

IsUnique:是否是唯一索引

6. [ForeignKey]

数据注解中的ForeignKey特性,是用来在两个实体间配置外键关系

7. [NotMapped]

当我们不想实体类中的某个或者某些属性,不要映射成数据库中的列的时候。可以使用NotMapped特性,标识NotMapped特性在属性上面就行了。默认情况下,EF为实体的每个属性映射数据列。【必须包含get;和set;】。NotMapped特性重写了这个约定。

EF不会为没有get;和set;的属性,创建列。

8. [StringLength]和[MaxLength]

StringLength特性可以应用于实体的string类型的属性上,它指定了属性的所允许的最大字符长度,然后对应在数据库中就生成相应长度的数据列(在SQL Server数据库中是,nvarchar类型)。

MaxLength特性指定了属性的值所允许的最大值,然后在数据库中就生成相应列的最大值。MaxLength特性可以应用于实体的String类型的属性和byte[]数组类型的属性上。

区别:[MaxLength] 适用的类型比[StringLength]多。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值