首页
学习
活动
专区
圈层
工具
发布

01-EF Core笔记之创建模型

映射到数据库的必填和可空,在约定情况下,CLR中可为null的属性将被映射为数据库可空字段,不能为null的属性映射为数据库的必填字段。...注意:如果CLR中属性不能为null,则无论如何配置都将为必填。 也就是说,如果能为null,则默认都是可空字段,因此在配置时,只需要配置是否为必填即可。...使用乐观的并发控制可提高数据库性能。 按照约定,EF Core不会设置任何并发控制的令牌字段,但是我们可以通过Fluent API或数据标注进行配置。...):基类和子类不在同一个表中,子类中包含基类的所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储在同一个表中。...使用有参构造函数需要注意: 参数名应与属性的名字、类型相匹配 如果参数中不具有所有字段,则在调用构造函数完成后,对未包含字段进行赋值 使用懒加载时,构造函数需要能够被代理类访问到,因此需要构造函数为public

3.9K20

大家都在使用 @Builder ,我为什么建议你谨慎使用 @Builder

@Data + final 实现字段必填下面是一个简单的示例:@Dataclass Student { /** * 设置为 final 构造必填 */ private final...// set、get方法忽略指定的前缀(驼峰式) // 注:必须所有字段都有前缀 String[] prefix() default {};}使用示例// fluent = true 日常开发中我们一般使用这个配置就行...@Data@Accessors(fluent = true)class Student { /** * 设置为 final 构造必填 */ private final String...final 构造必填 */ private final String prefixNum; /** * 设置为 final 构造必填 */ private final...补充一点:@Builder 我们可以用上面的的两种方式进行替代,在一些字段不可变的场景你甚至可以使用 @Getter @Setter 进行细化处理字段,毕竟 @Data 会暴露所有字段的访问和修改。

98920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Entity Framework Fluent API

    从功能上而言Data Annotations是Fluent API的一个子集, Data Annotations可以实现的功能Fluent API都能实现。...实际数据类型将因使用的数据库提供程序而异。将属性设置为行版本会自动将属性配置为开放式并发标记。...以下API的DataAnnotation特性是在EntityFramework中定义,如果也使用DataAnnotation方式来设置映射,就会给实体类增加额外的第三方程序集的依赖。...所以以下API的映射推荐使用FluentAPI的方式来设置映射 6.ToTable - TableAttribute:配置此实体类型映射到的表名 modelBuilder.Entity()...如果在对象模型中公开了外键属性,则使用 HasForeignKey 方法。并非所有关系都支持在对象模型中公开外键属性。

    1.3K10

    无需 XML Mapper,Fluent Mybatis 代码即是 SQL 操作!真香?

    使用 Fluent Mybatis 可以不用写具体的 XML 文件,通过 Java API 可以构造出比较复杂的业务 SQL 语句,做到代码逻辑和 SQL 逻辑的合一。...字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉的主要有 2 点: 字段名称的记忆和敲码困难 Entity 属性跟随数据库字段发生变更后的运行时错误 其他框架,比如 TkMybatis 在封装和易用性上比...lambda 表达的可以编译发现,通过字段编码的无法编译发现 编译时便可发现 不同字段动态 SQL 构造方法 通过接口参数方式 通过接口名称方式, Fluent API 的编码效率更高 语法渲染特点 无...-- 引入fluent-mybatis-processor, scope设置为provider 编译需要,运行时不需要 --> com.github.atool...dao/*BaseDao : Dao 实现基类, 所有的 DaoImpl 都继承各自基类 根据分层编码的原则,我们不会在 Service 类中直接使用 Mapper 类,而是引用 Dao 类。

    1.4K20

    你有没有使用过这些编程骚操作(一)- Lombok(Part B)

    Lombok注解 @Cleanup注解 与 @SneakyThrows注解 @Cleanup注解 @Cleanup注解可以生成对资源进行关闭的代码,无须手动通过try-catch-finally代码块判断并关闭所有的资源...@Accessor注解包含了三个属性分别是fluent、chain和prefix chain 属性 在entity包下新建Porsche实体类,chain 属性可以设置为true或者false @Data...,仅仅一行代码就可以搞定;执行测试方法 fluent 属性 在entity包下新建Tesla实体类,fluent属性可以设置true或者false @Data @Accessors(fluent =...,fluent=true将getter/setter方法名进行了统一,调用属性名的方法时如果传参就相当于调用setter方法,如果不传参就相当于调用getter方法; 执行测试方法 prefix属性...prefix属性可以将指定的前缀表示去除,在entity包新建Jaugar实体类 @Data @Accessors(prefix = "j") public class Jaugar { private

    59920

    EntityFramework Core 学习扫盲

    包含和排除实体类型 将实体在Context中映射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...主键 默认情况下,EF CORE会将实体中命名为Id或者[TypeName]Id的属性映射为数据库表中的主键。当然有些开发者不喜欢将主键命名为Id,EF CORE也提供了两种方式进行主键的相关设置。...Fluent API [HasKey] Fluent Api方式中的HasKey方法可以将属性映射为主键,对于复合主键(多个属性组合而成的主键标识)也可以很容易地进行表示。...备用键可以用作实体中除主键和索引外的唯一标识符,还可以用作外键目标。在Fluent Api中,有两种方法可以指定备用键,一种是当开发者将实体中的属性作为另一个实体的外键目标,另一种是手动指定。...备用键 备用键在之前的小节中已经提过,使用以下代码配置的列将自动设置为唯一标识列。

    10.5K90

    ChatClient:探索与AI模型通信的Fluent API

    本文将深入探讨ChatClient的底层原理、业务场景、概念、功能点,并通过Java代码示例展示如何使用Fluent API与AI模型进行通信。Fluent API简介什么是Fluent API?...Fluent API允许开发者以更加自然和直观的方式编写代码,就像是在填写一个选项菜单一样。Fluent API的优势提高代码可读性:通过方法链,代码逻辑更加清晰,易于理解。...Fluent API的设计ChatClient采用了Fluent API的设计模式,通过方法链的方式简化了与AI模型通信的过程。开发者可以通过链式调用的方式设置请求参数、发起请求,并获取响应结果。...请求数据:客户端发送的请求应该是一个JSON对象,包含user_input字段(用户输入)和可选的system_prompt字段(系统提示)。AI模型请求:将接收到的数据转发给AI模型。...返回实体对象如果你希望将AI模型的回复结果映射到Java实体对象上,你可以使用entity()方法:java复制代码record ActorFilms(String actor, List<String

    94921

    无需 XML Mapper,超级 Mybatis 代码即是 SQL 操作!真香?

    使用 Fluent Mybatis 可以不用写具体的 XML 文件,通过 Java API 可以构造出比较复杂的业务 SQL 语句,做到代码逻辑和 SQL 逻辑的合一。...字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉的主要有 2 点: 字段名称的记忆和敲码困难 Entity 属性跟随数据库字段发生变更后的运行时错误 其他框架,比如 TkMybatis 在封装和易用性上比...lambda 表达的可以编译发现,通过字段编码的无法编译发现 编译时便可发现 不同字段动态 SQL 构造方法 通过接口参数方式 通过接口名称方式, Fluent API 的编码效率更高 语法渲染特点 无...-- 引入fluent-mybatis-processor, scope设置为provider 编译需要,运行时不需要 -->              com.github.atool...dao/*BaseDao : Dao 实现基类, 所有的 DaoImpl 都继承各自基类 根据分层编码的原则,我们不会在 Service 类中直接使用 Mapper 类,而是引用 Dao 类。

    94710

    阿里又来卷啦,一款比 Mybatis 更牛的框架....

    使用 Fluent Mybatis 可以不用写具体的 XML 文件,通过 Java API 可以构造出比较复杂的业务 SQL 语句,做到代码逻辑和 SQL 逻辑的合一。...使用 Fluent Mybatis 来实现上面的功能 : 我们可以看到 fluent api 的能力,以及 IDE 对代码的渲染效果。...字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉的主要有 2 点: 字段名称的记忆和敲码困难 Entity 属性跟随数据库字段发生变更后的运行时错误 其他框架,比如 TkMybatis...表达的可以编译发现,通过字段编码的无法编译发现编译时便可发现不同字段动态 SQL 构造方法通过接口参数方式通过接口名称方式, Fluent API 的编码效率更高语法渲染特点无通过关键变量 select...dao/*BaseDao : Dao 实现基类, 所有的 DaoImpl 都继承各自基类 根据分层编码的原则,我们不会在 Service 类中直接使用 Mapper 类,而是引用 Dao 类。

    82221

    Spring认证中国教育管理中心-Spring Data R2DBC框架教程二

    插入或保存时,如果Id未设置该属性,则假设其值将由数据库自动生成。因此,对于自动生成,类中的Id属性或字段的类型必须是Long, 或Integer。...可以使用 fluent API 自定义表名。 13.4.2.选择数据 的select(…)和selectOne(…)在方法R2dbcEntityTemplate被用来从表中选择的数据。...Person.class); 13.4.3.流利的API 本节解释了 fluent API 的用法。...流畅的 API 风格让您可以将多个方法链接在一起,同时拥有易于理解的代码。为了提高可读性,您可以使用静态导入来避免使用“new”关键字来创建Criteria实例。...通过调用inTable(…)方法设置不同的表名。 指定转换为WHERE子句的查询。 应用Update对象。在这种情况下设置age为42并返回受影响的行数。

    1.7K10

    再见MybatisPlus,阿里推出新ORM框架!

    使用fluent mybatis也可以不用写具体的 xml 文件,通过 java api 可以构造出比较复杂的业务 sql 语句,做到代码逻辑和 sql 逻辑的合一。...三者实现对比 使用fluent mybatis 来实现上面的功能 需要本文具体演示代码可加我微信:codedq,免费获取! 我们可以看到fluent api的能力,以及 IDE 对代码的渲染效果。...MyStudentScoreMapper { List> summaryScore(SummaryQuery paras); } 定义接口需要用到的参数实体...字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉的主要有 2 点: 字段名称的记忆和敲码困难 Entity 属性跟随数据库字段发生变更后的运行时错误 其他框架,比如TkMybatis在封装和易用性上比...生成代码编码比较 fluent mybatis生成代码设置 public class AppEntityGenerator { static final String url = "jdbc:mysql

    73810

    告别原生 Mybatis,我选择这款增强版 ORM 框架!

    1前言 使用fluent mybatis也可以不用写具体的 xml 文件,通过 java api 可以构造出比较复杂的业务 sql 语句,做到代码逻辑和 sql 逻辑的合一。...3三者实现对比 使用fluent mybatis 来实现上面的功能 我们可以看到fluent api的能力,以及 IDE 对代码的渲染效果。...MyStudentScoreMapper { List> summaryScore(SummaryQuery paras); } 定义接口需要用到的参数实体...字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉的主要有 2 点: 字段名称的记忆和敲码困难 Entity 属性跟随数据库字段发生变更后的运行时错误 其他框架,比如TkMybatis在封装和易用性上比...5生成代码编码比较 fluent mybatis生成代码设置 public class AppEntityGenerator { static final String url = "jdbc:

    53820

    告别 MyBatis?dbVisitor 如何以现代设计重塑 Java 数据访问层

    它通过 Fluent API + 注解驱动 + 编译期元数据生成,实现“零 XML、全类型安全、链式操作”的开发体验。...✅ 核心特性一览:Fluent 链式查询 API List users = userDao.lambdaQuery() .eq(User::getStatus, 1) .like...(User::getName, "张") .orderByDesc(User::getCreateTime) .list(); 所有字段引用通过方法引用(User::getName)实现...自动生成实体与 DAO基于数据库表结构,通过注解处理器(Annotation Processor)在编译期生成 TableMeta 和基础 DAO,无需手写 Mapper XML。...dbVisitor 的出现,代表了一种趋势:将数据库操作真正融入现代 Java 语言体系,用编译期安全、函数式风格和自动化工具,解放开发者生产力。

    10510

    再见MybatisPlus,阿里推出新ORM框架!

    juejin.cn/post/6886019929519177735 使用fluent mybatis也可以不用写具体的 xml 文件,通过 java api 可以构造出比较复杂的业务 sql 语句,做到代码逻辑和...三者实现对比 使用fluent mybatis 来实现上面的功能 需要本文具体演示代码可加我微信:codedq,免费获取!...我们可以看到fluent api的能力,以及 IDE 对代码的渲染效果。...字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉的主要有 2 点: 字段名称的记忆和敲码困难 Entity 属性跟随数据库字段发生变更后的运行时错误 其他框架,比如TkMybatis在封装和易用性上比...生成代码编码比较 fluent mybatis生成代码设置 public class AppEntityGenerator { static final String url = "jdbc:mysql

    1.1K20

    Entity Framework DataAnnotations

    但是在EF中它又可以对映射关系进行控制,相比较Fluent API使用起来要简单一些。...下面列举实体模型中常用的DataAnnotation特性: 1.KeyAttribute:对数据库中表的主键的设置 [Key] public int OrderID {...[NotMapped] public string PhotoPath { get; set; }  12.ComplexTypeAttribute:标记指定实体属性是将一个对象作为另一个对象的属性...,无非“0:1,1:1,0:N,1:N,N:N”这几种,可以使用导航属性中的数据类型来表示,0…1端使用单实体类型表 示,N端使ICollection集合类型表示。...对于单实体端,默认是可为空的,即为0关系,如果要设置为1关系,要使用 [Required]标签来进行标记。但对于一对一中的关系主体与依赖对象确无法做更细节的控制。

    1.2K30

    EF Core 数据验证

    一、第三方扩展模型验证 前面所讲的是通过数据注解的方式来进行数据验证的,但是如果是使用 Fluent API 的方式就没办法解决文章开头所说的问题,因为Fluent API 模式并没有提供对数据模型的验证...RuleFor(p => p.Name).MaximumLength(5).WithMessage("姓名长度在5字节"); } } 上述代码进行了两个验证,一个是验证 Name 字段是否为空...,另一个是验证 Name 字段的长度,其中我们通过 MaximumLength 规定了 Name 字段的最长长度为 5 字节。...示例代码如下: if(ModelState.IsValid) { //后续代码 } else { //验证不通过处理代码 } 这里有一点需要注意,当传递的实体为 null 时,将返回错误信息,这是因为...如果需要验证实体集合就需要使用 RuleForEach 方法即可,对于自定义验证规则则可使用 SetValidator 方法。

    1.6K20
    领券