abp 的坑】的更多相关文章

1. Net Core 的DI和Abp的DI并存 Startup中 ConfigureServices返回值改为IServiceProvider 在ConfigureServices最后调用return services.AddAbp<AppModule>(); AppModule是一个自己实现的继承AbpModule的类,用于程序集注入和其他配置初始化. 比如 [DependsOn( typeof(DomainModule), typeof(InfrastructureModule), ty…
多数据库连接问题 viewmodel的验证问题 发布后,一段查找sln查找代码无法适用生产环境问题 多语言问题,默认中文设置与模板配置文件不统一…
配置数据库表前缀 ABP踩坑记录-目录 本篇其实和ABP关系并不大,主要是EF Core的一些应用-.-. 起因 支持数据库表前缀应该是很多应用中比较常见的功能,而在ABP中并没直接提供这一功能,所以在我们的应用中,我们转而借助EF Core的配置来实现数据库表前缀的配置. 解决方案 这里我结合了Fluent API和数据注解的形式进行配置. 首先,约定所有自定义的表,在其实体类型上都标注了[Table("tablename")]属性. 然后在QincaiDbContext中重载OnM…
添加实体 ABP踩坑记录-目录 这里我以问答模块为例,记录一下我在创建实体类过程中碰到的一些坑. 审计属性 具体什么是审计属性我这里就不再介绍了,大家可以参考官方文档. 这里我是通过继承定义好的基类来获得相应的审计属性,大家如果有需求的话,也可以自己通过接口定义. 其中,abp提供的审计基类有两种,一种只包含UserId的FullAuditedEntity<TPrimaryKey>,另一种则是添加了User的导航属性的FullAuditedEntity<TPrimaryKey, TUse…
配置User Secrets ABP踩坑记录-目录 起因 因为以往习惯在User Secrets中保存连接字符串之类信息,但当我把连接字符串移到secrets.json中后,却发现在迁移过程中会报如下的错误: 简单说,也就是迁移时无法获取到连接字符串信息. 解决方案 在Qincai.EntityFrameworkCore项目中,找到QincaiDbContextFactory.cs文件,修改如下注释处代码. public class QincaiDbContextFactory : IDesig…
使用MySQL ABP踩坑记录-目录 起因 因为我自用的服务器只是腾讯云1核1G的学生机,不方便装SQL Server,所以转而MySQL. 这里使用的MySQL版本号为 8.0. 解决方案 删除Qincai.EntityFrameCore项目中现有的针对SQL Server的迁移文件,即Migrations文件夹. 为Qincai.EntityFrameCore项目,添加Pomelo.EntityFrameworkCore.MySqlNuGet引用,并删除对Microsoft.EntityFr…
唔,说好的文章,欠了好久,先水一篇. 本系列目录:Abp介绍和经验分享-目录 概述 先表个态:对绝大多数人来说,ABP是成熟的,足以用到生产环境的. 最适合的:业务非常复杂且不追求极致性能的(这里并不是说ABP性能不行),或业务非常成熟稳定直接作为产品(卖软件)或服务(SaaS)进行销售的. 最不适合的:极致追求性能,言必谈性能,不谈业务的. 这里适合和不适合,主要是说投入产出比(不适合的那群人本身就在抗拒着,忙着挑刺). 当我们遇到需要极致的性能需求的时候,其实重点在于方案如何设计,开发框架和…
    企业级(例如ERP)应用, 一遍一遍的在重复:认证.验证.异常处理.日志.国际化和本地化.数据库连接管理.配置管理. 审计记录等,同时.NET有很多最佳实践:分层.模块化.DDD领域驱动.DI依赖倒置等,采用ABP就是基于这些惯例,来避免重复劳动,并且提供高质量.高效率的.NET开发.对于没有专职架构师的小型公司来说,选择ABP,可能是比较好的方案.万事都有利有弊,使用框架带来好处的同时,也有诸如学习曲线.踩坑等问题,本人使用ABP有3年多时间,实践了几个项目,踩过的坑有很多:想通过这个…
DDD领域驱动开发,实际是为复杂的业务场景而生的,为了让开发人员专注于业务,而操作系统.数据库.网络之类的技术细节,必须要持久透明化:实际就是数据库系统DBMS的ORM抽象,目标就是业务不需要考虑数据是如何存储的,业务是独立于DBMS, 通俗讲业务系统不依赖某个DBMS实现,可以通过配置,灵活动态支持各种DBMS,如MS SQL.MySql.Orcacle等.ABP的目标是DDD, 在持久透明化这块,是用IRepository仓储抽象来做的,具体的DBMS实现的ORM就放在基础架构层Infras…
数据库连接和事务管理,是数据库应用中的最重要概念之一.做过的人,都会头疼:何时Open一个连接?何时Start一个事务?何时Dispose这个连接?... ABP框架试图用一个叫做UnitOfWork的模型来解决这些.实际开发中,引入UnitOfWork,同时也会带来一些坑. [UnitOfWork] public void SaveFoodMaterials( FoodMaterialItem food,FoodMaterialCategory cat) { FoodMaterial fm =…