首页
视频
资源
登录
风清月
愿你出走半生,归来仍是少年
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
mvc
9篇
c#面试题
1篇
爬虫
1篇
Redis
1篇
NET
37篇
JS相关
2篇
Oracle
1篇
随笔
30篇
学点小英语
9篇
Vue.js
3篇
jquery
2篇
Sqlerver
7篇
前端
53篇
ps
1篇
net core
39篇
更多
架构
9篇
rpc
1篇
EF
6篇
mui
8篇
微服务
8篇
微信
1篇
.net
5篇
svn
1篇
人工智能
6篇
nginx
4篇
docker
14篇
git
4篇
c++
3篇
linux
11篇
uniapp
7篇
k8s
23篇
python
3篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
原
abp vnext 实体的guid主键
5217
人阅读
2022/5/29 17:23
总访问:
1653349
评论:
0
收藏:
0
手机
分类:
架构
####Guid主键的实体 如果你的实体Id类型为 Guid,有一些好的实践可以实现: - 创建一个构造函数,获取ID作为参数传递给基类. -- 如果没有为GUID Id赋值,ABP框架会在保存时设置它,但是在将实体保存到数据库之前最好在实体上有一个有效的Id. - 如果使用带参数的构造函数创建实体,那么还要创建一个 private 或 protected 构造函数. 当数据库提供程序从数据库读取你的实体时(反序列化时)将使用它. - 不要使用 Guid.NewGuid() 来设置Id! 在创建实体的代码中**使用IGuidGenerator服务**传递Id参数. IGuidGenerator经过优化可以产生连续的GUID.这对于关系数据库中的聚集索引非常重要. 示例实体: ``` public class Book : Entity<Guid> { public string Name { get; set; } public float Price { get; set; } protected Book() { } public Book(Guid id) : base(id) { } } ``` 在应用服务中使用示例: ``` public class BookAppService : ApplicationService, IBookAppService { private readonly IRepository<Book> _bookRepository; public BookAppService(IRepository<Book> bookRepository) { _bookRepository = bookRepository; } public async Task CreateAsync(CreateBookDto input) { await _bookRepository.InsertAsync( new Book(GuidGenerator.Create()) { Name = input.Name, Price = input.Price } ); } } ``` - BookAppService 注入图书实体的默认仓库,使用InsertAsync方法插入 Book 到数据库中. - GuidGenerator类型是 IGuidGenerator,它是在ApplicationService基类中定义的属性. ABP将这样常用属性预注入,所以不需要手动注入. - 如果你想遵循DDD最佳实践,请参阅下面的聚合示例部分.
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}