abp vnext 开发中遇到的一些报错
这几天在用abp vnext做一些demo,做的过程中遇到一些报错,记录一下。
' can be invoked with the available services and parameters: Cannot resolve parameter 'Acme.BookStore.XXXXXXXXXX.service' of constructor 'Void .ctor(Acme.BookStore.XXXXXXXXXXXWeChatUserInfoAppService)'.
这是第一个报错,在遇到的时候,就蒙了,找了半天没找到原因,后来在网上查到了原因,是因为在DbContext里面添加DbSet,对数据库没有迁移造成的。果断对数据库进行迁移。
结果却遇到了第二个错误
'Acme.BookStore.UserInfoAppService' can be invoked with the available services and parameters: Cannot resolve parameter 'Acme.BookStore.UserInfos.UserInfoRepository repository' of constructor 'Void .ctor(Acme.BookStore.UserInfos.IUserInfoRepository)'.
因为自己按照网上的教程,自己定义了一个仓储接口,没有对仓储进行实现和注册,结果就报了上述错误了。修改方法如下:
1. 添加DbContext接口IDbContext,在接口里面添加DbSet
[ConnectionStringName("Default")] public interface IBookStoreDbContext : IEfCoreDbContext { DbSet<UserInfo> UserInfos {get;} }
2. 实现自己定义的仓储接口
public class UserInfoRepository : EfCoreRepository<IBookStoreDbContext, UserInfo, Guid>, IUserInfoRepository { public UserInfoRepository(IDbContextProvider<IBookStoreDbContext> dbContextProvider) : base(dbContextProvider) { } }
3. 在EntityFrameworkCoreModule结尾的文件里面注册仓储,不然就会报上述错误
public class BookStoreEntityFrameworkCoreModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { BookStoreEfCoreEntityExtensionMappings.Configure(); } public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAbpDbContext<BookStoreDbContext>(options => { /* Remove "includeAllEntities: true" to create * default repositories only for aggregate roots */ options.AddDefaultRepositories(includeAllEntities: true); options.AddRepository<UserInfo, UserInfoRepository>(); }); Configure<AbpDbContextOptions>(options => { /* The main point to change your DBMS. * See also BookStoreMigrationsDbContextFactory for EF Core tooling. */ options.UseSqlServer(); }); }
参考链接:

浙公网安备 33010602011771号