有人可以根据这里提供的Halil Kalkan(@hikalkan)的指示进行扩展:https://github.com/volosoft/castle-windsor-ms-adapter
ORIGINAL - 使用标准Microsoft DI工作
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper();
services.AddMvc();
services.AddApiVersioning();
services.AddDbContextPool<CIDMSContext>(options => options.UseSqlServer(""));
services.AddScoped<IBuildingRepository, BuildingRepository>();
services.AddScoped<IComponentRepository, ComponentRepository>();
}
Run Code Online (Sandbox Code Playgroud)
新 - 不起作用.试图使用Castle.Windsor.MsDependencyInjection
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper();
services.AddMvc();
services.AddApiVersioning();
services.AddDbContextPool<CIDMSContext>(options => options.UseSqlServer(""));
//services.AddScoped<IBuildingRepository, BuildingRepository>();
//services.AddScoped<IComponentRepository, ComponentRepository>();
return WindsorRegistrationHelper.CreateServiceProvider(
new WindsorContainer(), services);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
尝试激活时,无法解析类型'... Repositories.Buildings.IBuildingRepository'的服务... Controllers.BuildingController'
我的最终目标是不必为我创建的每个存储库提供DI.我希望Castle Windsor按照惯例去DI它.如果还有其他选择为.Net Core 2.0做这个,那么我也对这些选项持开放态度.
我正在使用Visual Studio 15.4.1 .Net Core 2.0 API项目.
有谁看到我做错了什么?
ProjectActivityTasks有UnitOfMeasureId和ProjectActivityTaskTypeId.随着它的编写方式,它认为这样UnitOfMeasure做ProjectActivityTaskType.它示数出来就ThenInclude对UnitOfMeasure他说
ProjectActivityTaskType不包含UnitOfMeasure的定义
哪个是对的.UnitOfMeasure去ProjectActivityTasks.
我正在引用此页面但它似乎没有这样工作:https://docs.microsoft.com/en-us/ef/core/querying/related-data
var qry = await _projectActivityRepository.GetAll()
.Include(x => x.ProjectActivityVehicles)
.ThenInclude(x => x.Vehicle)
.Include(x => x.ProjectActivityTasks)
.ThenInclude(x => x.ProjectActivityTaskType)
.ThenInclude(x => x.UnitOfMeasure)
.Where(x => x.Id == Id && x.TenantId == (int)AbpSession.TenantId)
.FirstOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)