efcore 实体配置_Entity Framework Core - 创建并配置模型-实体属性

实体属性

模型中每个实体类型都有一组属性,根据这些属性EF Core将从数据库中读取和写入数据。如果连接的是关系型数据库,实体属性将映射到表中的列(table中的column)

1、包含和排除的属性

约定:具有getter和setter的所有public的属性都将包括在模型中。

排除特定属性的2中方式:

1、数据批注:

[Table("blog",Schema ="ER")]public classBlogModel

{public int BlogId { get; set; }public string Url { get; set; }

[NotMapped]public DateTime LoadTime { get; set; }public List Posts { get; set; }

}

2、Fluent API:

protected override voidOnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.HasDefaultSchema("ER").Entity();

modelBuilder.Entity()

.Ignore(b=>b.LoadTime);

}

2、列名

约定:使用关系数据库时,实体属性映射到与属性同名的表列。

如果需要映射到不同的列名,有3种方式。

1、Fluent API:

protected override voidOnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.HasDefaultSchema("ER").Entity();

modelBuilder.Entity()

.Property(b=> b.PostId).HasColumnName("post_id");

}

2、数据批注:

public classPostModel

{

[Column("post_id")]public int PostId { get; set; }public string Title { get; set; }public string Content { get; set; }public BlogModel Blog{ get; set; }

}

3、显示配置

Required 属性可以将可选的属性配置为‘必须’:

public classBlog

{public int BlogId { get; set; }

[Required]public string Url { get; set; }

}

4、排序规则

这是EF Core新特性。

可以在string类型的列上定义排序规则,以确定如何对它们进行比较和排序。 例如,以下代码段将 SQL Server 列配置为不区分大小写:

protected override voidOnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.HasDefaultSchema("ER").Entity();

modelBuilder.Entity()

.Property(b=> b.Title).HasColumnName("title").UseCollation("SQL_Latin1_General_CP1_CI_AS");

}

如果数据库中的所有列都需要使用特定的排序规则,可以改为在数据库级别定义排序规则:

modelBuilder.UseCollation("SQL_Latin1_General_CP1_CS_AS");

警告:索引隐式继承列的排序规则。这意味着,对列的所有查询都将自动符合使用该列定义的索引的条件,前提是该查询不指定其他排序规则。

在查询中指定显式排序规则通常会阻止该查询使用该列上定义的索引,因为排序规则将不再匹配。

因此,建议在使用此功能时务必小心。 最好是在 (或数据库) 级别的列定义排序规则,以允许所有查询隐式使用该排序规则并受益于任何索引。

具体的,可参考排序规则

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值