tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
3
文章
317
粉丝
22
评论
14
bootstrap 栅格布局一小例子
剑轩 : 后端写样式有点痛苦哇
一点flex布局的运用
剑轩 : 后端写样式有点痛苦哇
vue.js常用指令
剑轩 : 可以可以,多总结一点
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

abp vnext 实体的guid主键

7071人阅读 2022/5/29 17:23 总访问:2139001 评论:0 收藏:0 手机
分类: 架构

Guid主键的实体

如果你的实体Id类型为 Guid,有一些好的实践可以实现:

  • 创建一个构造函数,获取ID作为参数传递给基类.
    — 如果没有为GUID Id赋值,ABP框架会在保存时设置它,但是在将实体保存到数据库之前最好在实体上有一个有效的Id.

  • 如果使用带参数的构造函数创建实体,那么还要创建一个 private 或 protected 构造函数. 当数据库提供程序从数据库读取你的实体时(反序列化时)将使用它.

  • 不要使用 Guid.NewGuid() 来设置Id! 在创建实体的代码中使用IGuidGenerator服务传递Id参数. IGuidGenerator经过优化可以产生连续的GUID.这对于关系数据库中的聚集索引非常重要.

示例实体:

  1. public class Book : Entity<Guid>
  2. {
  3. public string Name { get; set; }
  4. public float Price { get; set; }
  5. protected Book()
  6. {
  7. }
  8. public Book(Guid id)
  9. : base(id)
  10. {
  11. }
  12. }

在应用服务中使用示例:

  1. public class BookAppService : ApplicationService, IBookAppService
  2. {
  3. private readonly IRepository<Book> _bookRepository;
  4. public BookAppService(IRepository<Book> bookRepository)
  5. {
  6. _bookRepository = bookRepository;
  7. }
  8. public async Task CreateAsync(CreateBookDto input)
  9. {
  10. await _bookRepository.InsertAsync(
  11. new Book(GuidGenerator.Create())
  12. {
  13. Name = input.Name,
  14. Price = input.Price
  15. }
  16. );
  17. }
  18. }
  • BookAppService 注入图书实体的默认仓库,使用InsertAsync方法插入 Book 到数据库中.
  • GuidGenerator类型是 IGuidGenerator,它是在ApplicationService基类中定义的属性. ABP将这样常用属性预注入,所以不需要手动注入.
  • 如果你想遵循DDD最佳实践,请参阅下面的聚合示例部分.

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

EF多种更新方法。EF修改,Entity Framework修改。abp vnext ef 更新封装

[TOC] 方法1:直接执行更新的sql语句过于简单不说了 方法2:先查询在更新Users result = oapEntities.Users.Where(a =&gt...

EF添加。Entity Framework添加。abp vnext ef 添加,批量添加的封装

EF的添加如下,代码比较添加: ShipEntities se = new ShipEntities(); se.Users.Add(user); se.SaveChanges(); 方法2:...

领域驱动设计DDD abp vnext 一:项目架构搭建,模块使用

[TOC]用户接口层改造nuget中下载abp依赖VoLo.Abp.AspNetCore.Mvc ItemGroup添加方式 &lt;ItemGroup&gt; &lt;Packa...

abp vnext ObjectMapper 为空

abp vnext ObjectMapper 报空引用的错。System.NullReferenceException:“Object reference not set to an instance of an ...

领域驱动设计DDD abp vnext 二:使用仓储

[TOC]领域驱动设计仓储介绍在领域层和数据映射层之间进行中介,使用类似集合的接口来操作领域对象.” (Martin Fowler)。 实...

abp vnext 通用仓储,操作空引用。abp vnext 仓储报错,仓储为空。依赖注入报错

An internal error occurred during your request! abp vnext 通用仓储依赖注入拿到为空,或者能正常拿到依赖注入操作空引...

领域驱动设计DDD abp vnext 三:领域模型 之 失血模型,贫血模型,充血模型,胀血模型

[TOC]领域模型分为:失血模型,贫血模型,充血模型,胀血模型。 一、失血模型传统的三层架构,实体对象就是简单的POJO或者...

abp vnext连接mysql。.net core连接mysql。ef core连接mysql

增加一个MySQL的库:Volo.Abp.EntityFrameworkCore.MySQL &lt;PackageReference Include=&quot;Volo.Abp.EntityFrameworkCo...

abp vnext ef core连接MySql报空引用错,连接SqlServer报空引用错。abp vnext 的坑

使用abp vnext 真的太喜欢报空引用的错了。你报点错给一点具体的错不行么,这样搞起让人去猜太坑了,比如前面的auto_fac没...

abp vnext项目结构分析

Domain 项目领域层,领域驱动开发的核心层。 它主要包含 实体, 集合根, 领域服务, 值类型, 仓储接口 和解决方案的其他领域...

abp vnext 获取配置文件

代码如下: public override void ConfigureServices(ServiceConfigurationContext context) { var services = cont...

abp vnext验证

验证DTO微软官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-7.0 数据注...

abp vnext 通用仓储 ef core。WhereIf,多条件,动态条件,分页,动态排序等

abp vnext 通用仓储 ef core WhereIf,多条件,分页等public async Task&lt;List&lt;LandInfoDto&gt;&gt; GetListAsync(Pag...

abp vnext 事务,多表查询,自定义仓储

[TOC]abp vnext 中的通用仓储主要是封装的单表操作,如果是实现事务的话最好还是封装一个自定义仓储。 自定义仓储大概的结...

abp vnext导航属性,级联查询。abp vnext 通用仓储 级联查询不到数据。abp vnext 多表查询,join

使用abp vnext的导航属性做级联查询,当然你可以使用自定义仓储,直接用原生的ef来写,也很简单方便abp vnext自定义仓储里...