1.在用户微服务模块中WeifuwuDemo.User.Domain新建文件夹users,并新建一个userinfo实体;
public class UserInfo:FullAuditedAggregateRoot<Guid>
{
public string UserName { get; set; }
public string Password { get; set; }
public string UserNickName { get;set; }
public string UserQQ { get;set; }
public string UserPhone { get;set; }
}
2.在项目WeifuwuDemo.User.EntityFrameworkCore的DbContext中添加dbset
[ConnectionStringName(UserDbProperties.ConnectionStringName)]
public class UserDbContext : AbpDbContext<UserDbContext>, IUserDbContext
{
/* Add DbSet for each Aggregate Root here. Example:
* public DbSet<Question> Questions { get; set; }
*/
public DbSet<UserInfo> UserInfos { get; set; }
public UserDbContext(DbContextOptions<UserDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureUser();
}
}
在项目的DbContextModelCreatingExtensions文件中添加表注册:
public static class UserDbContextModelCreatingExtensions
{
public static void ConfigureUser(
this ModelBuilder builder)
{
Check.NotNull(builder, nameof(builder));
builder.Entity<UserInfo>(b =>
{
b.ConfigureByConvention();
});
/* Configure all entities here. Example:
builder.Entity<Question>(b =>
{
//Configure table & schema name
b.ToTable(UserDbProperties.DbTablePrefix + "Questions", UserDbProperties.DbSchema);
b.ConfigureByConvention();
//Properties
b.Property(q => q.Title).IsRequired().HasMaxLength(QuestionConsts.MaxTitleLength);
//Relations
b.HasMany(question => question.Tags).WithOne().HasForeignKey(qt => qt.QuestionId);
//Indexes
b.HasIndex(q => q.CreationTime);
});
*/
}
}
3.在项目 WeifuwuDemo.User.HttpApi.Host中生成迁移表:
在项目文件夹地址栏执行cmd命令,用dotnet ef命令进行迁移表:
dotnet ef migrations add userinfo
生成数据库表:dotnet ef database update
在WeifuwuDemo.User.Domain中Users文件夹创建仓储层Repository:用于后面我们自己的自定义方法
public interface IUserinfoAbpRepository:IRepository<UserInfo,Guid>
{
//UserInfo GetUserInfoByName(string userName);
//public IEnumerable<UserInfo> GetUserinfoAndImgs();
}
在WeifuwuDemo.User.EntityFrameworkCore中新建文件夹users并创建方法实现仓储层:
namespace WeifuwuDemo.User.Users
{
public class UserinfoAbpRepository:EfCoreRepository<UserDbContext,UserInfo,Guid>,IUserinfoAbpRepository
{
public UserinfoAbpRepository(IDbContextProvider<UserDbContext> dbContextProvider):base(dbContextProvider)
{
}
}
}
在WeifuwuDemo.User.Application.Contracts中新建users文件夹并创建service接口,dto等
namespace WeifuwuDemo.User.Userinfos
{
public interface IUserinfoAppServices:ICrudAppService<UserinfoDto,Guid,PagedAndSortedResultRequestDto,CreateUserinfoDto,UpdateUserinfoDto>
{
}
}
namespace WeifuwuDemo.User.Userinfos
{
public class CreateUserinfoDto
{
public string UserName { get; set; }
public string Password { get; set; }
}
}
namespace WeifuwuDemo.User.Userinfos
{
public class DeleteUserinfoDto
{
public string UserName { get; set; }
}
}
namespace WeifuwuDemo.User.Userinfos
{
public class UpdateUserinfoDto
{
public string UserName { get; set; }
public string Password { get; set; }
public string UserNickName { get; set; }
public string UserQQ { get; set; }
public string UserPhone { get; set; }
}
}
namespace WeifuwuDemo.User.Userinfos
{
public class UserinfoDto:EntityDto<Guid>
{
public string UserName { get; set; }
public string Password { get; set; }
public string UserNickName { get; set; }
public string UserQQ { get; set; }
public string UserPhone { get; set; }
}
}
在WeifuwuDemo.User.Application中实现service接口
namespace WeifuwuDemo.User.Userinfos
{
[RemoteService(IsEnabled =false)]
public class UserinfoAppServices:CrudAppService<UserInfo,UserinfoDto,Guid,PagedAndSortedResultRequestDto,CreateUserinfoDto,UpdateUserinfoDto>, IUserinfoAppServices
{
private readonly IUserinfoAbpRepository _repository;
public UserinfoAppServices(IUserinfoAbpRepository repository):base(repository)
{
_repository = repository;
}
}
}
在WeifuwuDemo.User.HttpApi中创建controller:
namespace WeifuwuDemo.User.Userinfo
{
[ApiController]
[Route("api/[controller]/[action]")]
public class UserinfoController:IUserinfoAppServices
{
private readonly IUserinfoAppServices _userinfoAppServices;
public UserinfoController(IUserinfoAppServices userinfoAppServices)
{
_userinfoAppServices = userinfoAppServices;
}
[HttpPost]
public Task<UserinfoDto> CreateAsync(CreateUserinfoDto input)
{
return _userinfoAppServices.CreateAsync(input);
}
[HttpDelete]
public Task DeleteAsync(Guid id)
{
return _userinfoAppServices.DeleteAsync(id);
}
[HttpGet]
public Task<UserinfoDto> GetAsync(Guid id)
{
return _userinfoAppServices.GetAsync(id);
}
[HttpGet]
public Task<PagedResultDto<UserinfoDto>> GetListAsync(PagedAndSortedResultRequestDto input)
{
return _userinfoAppServices.GetListAsync(input);
}
[HttpPut]
public Task<UserinfoDto> UpdateAsync(Guid id, UpdateUserinfoDto input)
{
return _userinfoAppServices.UpdateAsync(id, input);
}
}
}
在WeifuwuDemo.User.Application项目中添加dto映射关系:
namespace WeifuwuDemo.User;
public class UserApplicationAutoMapperProfile : Profile
{
public UserApplicationAutoMapperProfile()
{
CreateMap<UserInfo, UserinfoDto>();
CreateMap<PagedAndSortedResultRequestDto, UserInfo>();
CreateMap<CreateUserinfoDto, UserInfo>();
CreateMap<UpdateUserinfoDto, UserInfo>();
}
}
将WeifuwuDemo.User.Application中UserApplicationModule的验证改为false
public class UserApplicationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper<UserApplicationModule>();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<UserApplicationModule>(validate: false);
});
}
}