在DDD中,存储库加载整个聚合 - 我们要么加载所有聚合,要么加载所有聚合.这也意味着应该避免延迟加载.
我关心的是表现方面.如果这会导致数千个对象加载到内存中会怎样?例如,一个聚合Customer回来了一万Orders.
在这种情况下,这是否意味着我需要重新设计并重新考虑我的聚合?DDD是否就此问题提出建议?
我们如何从别名中删除索引?也就是说,我不再需要将索引与别名相关联.
我的第二个问题是 - 可以在没有任何索引的情况下存在别名吗?
我有一个附加元素的Angular 1.x指令.简而言之:
app.directive('mydirective', function() {
template: '<ng-transclude></ng-transclude>',
link: function(el) {
var child = angular.element("<div/>");
el.append(child);
}
Run Code Online (Sandbox Code Playgroud)
我可以将此指令迁移到Angular 2,如下所示:
@Directive({
selector: '[mydirective']
})
export class MyDirective implements OnInit {
constructor(private elementRef: ElementRef) { }
ngOnit() {
var child = angular.element("<div/>");
this.elementRef.nativeElement.append(child);
}
}
Run Code Online (Sandbox Code Playgroud)
令我不安的是nativeElement官方文件中的这句话:
当需要直接访问DOM时,使用此API作为最后一个资源.
我的问题是 - 我怎样才能将此指令正确地迁移到Angular 2?我唯一的要求是动态构建一个元素,并使用该指令将其附加到元素.
概念unit test和integration test定义明确:前者测试一个组件,后者测试多个组件.
我Effort用来测试我的Entity Framework存储库.Effort是一个内存数据库实现,因此我们不会访问实际的数据库而只访问内存,因此速度更快.
我只是通过创建一些假数据并使用这些假数据填充内存数据库来测试我的存储库.我不是在嘲笑数据上下文.这些应该被视为单元测试还是集成测试?
编辑:我正在测试我的存储库的方法 - 例如CustomerRepository.GetAllCustomers.我正在使用(比如说)5个客户填充这个内存数据库,调用该方法,并断言我让这5个客户回来了.
我有一个模块负责通过服务查询我的 API,我计划在许多应用程序中使用该模块。反过来,应用程序负责在方法中将配置(例如 API URL)传递给此模块forRoot:
export class APIModule {
static forRoot(appConfig: AppConfig): ModuleWithProviders {
return {
ngModule: APIModule,
providers: [
services.ProductService,
services.UserService,
{ provide: AppConfigToken, useValue: appConfig}
]
};
}
}
Run Code Online (Sandbox Code Playgroud)
我面临一个挑战,因为应用程序(即客户端模块)通过利用 .json 文件从 JSON 文件中获取配置APP_INITIALIZER。这是简化的定义:
@NgModule({
imports: [
APIModule.forRoot({ apiUrl: '' }) // ISSUE HERE
],
providers: [{
provide: APP_INITIALIZER,
multi: true,
deps: [AppConfigService],
useFactory: (appConfigService: AppConfigService) => {
return () => {
return appConfigService.getAppConfig();
}
}
}],
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
我的问题是:我怎么能调用APIModule.forRoot …
我正在学习Node.jsWindows环境.到目前为止,我一直在使用Node.js command prompt快捷方式来运行命令.
但Windows安装程序还会创建一个名为Node.js"C:\ Program Files \nodejs \node.exe" 的快捷方式,我不确定它的用途.
我该如何使用该程序?
我已经使用Visual Studio Online构建定义为我的项目设置了持续集成.
在部署我的数据库(到Azure测试环境)时,我只SQL Server Database Project使用正确的发布设置构建我的数据库.
但我想切换到Entity Framework代码第一种方法并利用迁移功能,这需要我调用migrate.exe.
我的问题是 - 如何从VSO构建定义中运行migrate.exe ?
在处理 中的设置时,我可以想到两种方法Angular:
InjectionToken 根据文档使用 DI 设置。在单元测试时,我习惯于 #1:我只是创建适合我的单元测试的设置并注入它们。
但是如果我选择#2,我怎么能改变设置呢?说我需要模拟一个设置。我可以在运行单元测试时添加环境标志吗?
我有一个 DDD 应用程序,我试图了解 SignalR 在我的层中的位置:
1. Presentation (Angular)
2. Distributed Services (Web API)
3. Application
4. Domain
5. Data
Run Code Online (Sandbox Code Playgroud)
基本上,当有新数据时,我的 SignalR 集线器会通知客户端(Angular Web 应用程序)。为此,我在后台线程中运行后台服务,该服务每隔一段时间检查数据库并在有新数据时通知客户端。
我倾向于这样思考:
Presentation层。鉴于我的演示项目纯粹是客户端(Angular),我将在 Presentation 下添加一个新项目,仅用于集线器。Application层。我会INotify用一个Notify方法注入一个接口,我会用 SignalR 来实现。这是否符合 DDD 原则?