怎样优雅地增删查改(三):ABP框架提供的增删改查的基类业务用户的增删查改

创建业务用户

区别于身份管理模块(Identity模块)的鉴权用户IdentityUser,业务用户(BusinessUser)是围绕业务系统中“用户”这一定义的领域模型。如:在一个医院系统中,业务用户可以是医生、护士、患者;在一个OA系统中,业务用户可以是员工、管理员、客户等。

业务用户和鉴权用户由同步机制关联,业务用户通过分布式事件(DistributedEvent)的同步器(Synchronizer)与鉴权用户关联同步。

在Health业务模块中,定义两种业务用户:

Client: 客户;

Employee: 员工。

这些业务用户继承自HealthUser,HealthUser是业务用户的基类,包含了业务用户的基本信息,如姓名,性别,出生日期,身份证号等。并且需要实现IUpdateUserData接口,以便在同步鉴权用户信息时,更新业务用户的基本信息。

Employee包含工号,职称,简介等信息。其领域模型定义如下:

public class Employee : HealthUser<Guid>, IUser, IUpdateUserData
{
    [StringLength(12)]
    public string EmployeeNumber { get; set; }

    [StringLength(64)]
    public string EmployeeTitle { get; set; }

    public string Introduction { get; set; }

    ...
}

Client包含客户号,身高,体重,婚姻状况等信息。其领域模型定义如下:

public class Client : HealthUser<Guid>, IUser, IUpdateUserData
{

    //unique

    [StringLength(12)]
    public string ClientNumber { get; set; }

    public string ClientNumberType { get; set; }

    [Range(0.0, 250.0)]
    public double? Height { get; set; }


    [Range(0.0, 1000.0)]
    public double? Weight { get; set; }

    public string Marriage { get; set; }

    public string Status { get; set; }
}

创建业务用户同步器

以Client为例,ClientLookupService是业务用户的查询服务,其基类UserLookupService定义了关联用户的查询接口,包括按ID查询,按用户名查询,按组织架构查询,按户关系查询等。

创建ClientLookupService, 代码如下

public class ClientLookupService : UserLookupService<Cli
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABP框架提供了通用的增删查改(CRUD)操作,如果需要自定义操作,可以按照以下步骤进行: 1. 定义自定义服务方法 在应用服务接口中定义自定义方法,例如: ```csharp public interface IStudentAppService : IApplicationService { Task<ListResultDto<StudentDto>> GetAllStudents(); Task<StudentDto> GetStudentById(int id); Task CreateStudent(CreateStudentInput input); Task UpdateStudent(UpdateStudentInput input); Task DeleteStudent(int id); Task MyCustomMethod(MyCustomMethodInput input); } ``` 其中,MyCustomMethod 为自定义方法。 2. 实现自定义服务方法 在应用服务实现类中实现自定义方法,例如: ```csharp public class StudentAppService : ApplicationService, IStudentAppService { private readonly IRepository<Student> _studentRepository; public StudentAppService(IRepository<Student> studentRepository) { _studentRepository = studentRepository; } public async Task<ListResultDto<StudentDto>> GetAllStudents() { var students = await _studentRepository.GetAllListAsync(); return new ListResultDto<StudentDto>(ObjectMapper.Map<List<StudentDto>>(students)); } public async Task<StudentDto> GetStudentById(int id) { var student = await _studentRepository.GetAsync(id); return ObjectMapper.Map<StudentDto>(student); } public async Task CreateStudent(CreateStudentInput input) { var student = ObjectMapper.Map<Student>(input); await _studentRepository.InsertAsync(student); } public async Task UpdateStudent(UpdateStudentInput input) { var student = await _studentRepository.GetAsync(input.Id); ObjectMapper.Map(input, student); } public async Task DeleteStudent(int id) { await _studentRepository.DeleteAsync(id); } public async Task MyCustomMethod(MyCustomMethodInput input) { // 实现自定义方法 } } ``` 其中,MyCustomMethod 实现自定义方法的逻辑。 3. 在前端代码中调用自定义服务方法 在前端代码中调用自定义服务方法,例如: ```javascript abp.services.app.student.myCustomMethod(input).done(function (result) { // 处理自定义方法的返回结果 }); ``` 其中,input 为传递给自定义方法的参数。 通过以上步骤,即可完成自定义增删查改操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值