c# - 为什么存储库为空
问题描述
我正在制作一个 API,我正在制作 API 调用。
我创建了一个名为IPartnerRepository
When I run my call 它给出了 nullexception 错误的存储库。
当我调试我的代码时,我看到它IPartnerRepository
是空的。
我的视觉工作室没有显示任何错误或输入错误。
为什么我的程序找不到那个存储库呢?为什么它是空的?
这是我的代码:
public IPartnerRepository PartnerRepository { get; set; } // = null
[RequiresAnyRole(Roles.superadmin, Roles.admin)]
public async Task<PartnerListResponse> Get(PartnerListRequest request)
{
var items = await PartnerRepository.GetAllAsync();
return new PartnerListResponse
{
Items = items
};
}
IPartner 存储库
using System;
using DTO = Ringdesk.Api.ServiceModel.DTO;
namespace Ringdesk.Api.ServiceModel.Interfaces
{
public interface IPartnerRepository : IDtoRepository<DTO.Partner,
DTO.PartnerForInsert, DTO.PartnerForUpdate>
{
}
}
合作伙伴.cs
using ServiceStack.Model;
using Ringdesk.Api.ServiceModel.Attributes;
namespace Ringdesk.Api.ServiceModel.DTO
{
public class Partner : IHasId<int>
{
public int Id { get; set; }
public string Guid { get; set; }
[PropertyValue("name")]
public string Name { get; set; }
}
public class PartnerForUpdate : IHasId<int>
{
public int Id { get; set; }
public string Name { get; set; }
}
public class PartnerForInsert
{
public string Name { get; set; }
}
}
启动.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using ServiceStack;
using Ringdesk.Api.Web.Jobs;
using NLog.Extensions.Logging;
using NLog.Web;
namespace Ringdesk.Api.Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddOrchardCms();
//services.AddMvc();
}
public class StartupSettings
{
public bool RunJobs { get; set; }
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime)
{
var startupSettings = Configuration.GetSection("startupSettings").Get<StartupSettings>();
if (startupSettings == null || startupSettings.RunJobs)
{
var quartz = new QuartzSetup();
lifetime.ApplicationStarted.Register(quartz.Start);
lifetime.ApplicationStopping.Register(quartz.Stop);
}
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddNLog();
env.ConfigureNLog("nlog.config");
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
var appSettings = new NetCoreAppSettings(Configuration);
app.UseServiceStack(new AppHost(appSettings));
app.UseOrchardCore();
//app.UseMvc(routes =>
// {
// routes.MapRoute(
// name: "default",
// template: "{controller=Home}/{action=Index}/{id?}");
// });
}
}
}
解决方案
通过将 PartnerRepository 添加到服务模块,我修复了它!
container.RegisterAs<PartnerRepository, IPartnerRepository>();
container.Register<IDtoRepository<Db.PartnerProperty, Db.PartnerProperty, Db.PartnerProperty>>(c =>
{
var repository = new DtoRepository<Db.PartnerProperty, Db.PartnerProperty, Db.PartnerProperty, Db.PartnerProperty>();
c.AutoWire(repository);
return repository;
});
这已经存在CustomerRepository
就像@Croxy 说我忘了给CustomerRepository
里面赋值ServiceModule
推荐阅读
- laravel - 按班级和班级组查看数据
- django - 在 django 的视图中编写 permission_required 的正确方法是什么?
- c# - 带注释的绘图必须保持在 WPF 中的相同位置
- javascript - 如何在 jQuery 中选择正确的元素
- python - 如何通过一些额外的列对 Pandas DataFrame 中的新数据进行预测?
- typescript - 如何替换innerHtml Angular 8中的标签
- sql - 如何在 SQL Server 中动态将行转换为列?
- c++ - 无法使用指向指针的指针的值获得相同的指针值?
- sql - 如何将用户列表保存到数据库 asp.net Web 表单
- npm - 我无法运行完整的代码“npm install”