質問編集履歴

46

修正

2021/04/09 08:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,19 +148,113 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
- // インターフェースのメソッドを使うわけではなさそうなので、
151
+ // インターフェースのプロパティ・メソッドを使うわけではなさそうなので、
152
152
 
153
153
  // DbContextに追加したメソッドは全て定義しなければいけないのかは不明
154
154
 
155
155
 
156
156
 
157
- public Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());
157
+ // public Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());
158
+
159
+
160
+
161
+ // DbSet<Department> Departments { get; set; }
162
+
163
+ }
164
+
165
+ }
166
+
167
+ ```
168
+
169
+
170
+
171
+ ```C#
172
+
173
+ // TestDbContext
174
+
175
+
176
+
177
+ using Microsoft.EntityFrameworkCore;
178
+
179
+ using System;
180
+
181
+ using System.Collections.Generic;
182
+
183
+ using System.ComponentModel.DataAnnotations;
184
+
185
+ using System.Diagnostics;
186
+
187
+ using System.Linq;
188
+
189
+ using System.Threading;
190
+
191
+ using System.Threading.Tasks;
192
+
193
+
194
+
195
+ namespace DomainModel {
196
+
197
+ public class TestDbContext : DbContext, ITestDbContext {
198
+
199
+
200
+
201
+ public TestDbContext(DbContextOptions<TestDbContext> options) : base(options) {
202
+
203
+
204
+
205
+ }
206
+
207
+
208
+
209
+ public async override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()) {
210
+
211
+ // ...
212
+
213
+ }
214
+
215
+
216
+
217
+ /// <summary>
218
+
219
+ /// Override OnModelCreating
220
+
221
+ /// </summary>
222
+
223
+ /// <param name="modelBuilder"></param>
224
+
225
+ protected override void OnModelCreating(ModelBuilder modelBuilder) {
226
+
227
+ // ...
228
+
229
+
230
+
231
+ base.OnModelCreating(modelBuilder);
232
+
233
+ }
234
+
235
+
236
+
237
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
238
+
239
+ string connectionString = "Data Source=...";
240
+
241
+
242
+
243
+ optionsBuilder.UseSqlServer(connectionString);
244
+
245
+ optionsBuilder.UseLazyLoadingProxies();
246
+
247
+
248
+
249
+ base.OnConfiguring(optionsBuilder);
250
+
251
+ }
158
252
 
159
253
 
160
254
 
161
255
  // Test用の適当なクラス
162
256
 
163
- DbSet<Department> Departments { get; set; }
257
+ public DbSet<Department> Departments { get; set; }
164
258
 
165
259
  }
166
260
 
@@ -172,6 +266,126 @@
172
266
 
173
267
  ```C#
174
268
 
269
+ // App.xaml
270
+
271
+
272
+
273
+ using DomainModel;
274
+
275
+ using DryIoc;
276
+
277
+ using Microsoft.Extensions.Configuration;
278
+
279
+ using Prism.DryIoc;
280
+
281
+ using Prism.Ioc;
282
+
283
+ using System.IO;
284
+
285
+ using System.Windows;
286
+
287
+ using UserInterface.Views;
288
+
289
+
290
+
291
+ namespace UserInterface {
292
+
293
+ /// <summary>
294
+
295
+ /// Interaction logic for App.xaml
296
+
297
+ /// </summary>
298
+
299
+ public partial class App {
300
+
301
+ protected override Window CreateShell() {
302
+
303
+ return Container.Resolve<MainWindow>();
304
+
305
+ }
306
+
307
+
308
+
309
+ protected override void RegisterTypes(IContainerRegistry containerRegistry) {
310
+
311
+ // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも
312
+
313
+ // (または依存関係が逆転しない他の方法)
314
+
315
+ // IConfiguration configuration = new ConfigurationBuilder()
316
+
317
+ // .SetBasePath(Directory.GetCurrentDirectory())
318
+
319
+ // .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
320
+
321
+ // .Build();
322
+
323
+
324
+
325
+ // Drylocを利用する場合
326
+
327
+ var container = containerRegistry.GetContainer();
328
+
329
+ container.Register<ITestDbContext, TestDbContext>();
330
+
331
+ }
332
+
333
+ }
334
+
335
+ }
336
+
337
+ ```
338
+
339
+
340
+
341
+ appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませることを検討しようと思います。
342
+
343
+ (または依存関係が逆転しない他の方法)
344
+
345
+
346
+
347
+ DbContextインターフェースには、DbContextに追加したメソッドは全て定義しなければいけないのかはまだ不明ですが。
348
+
349
+
350
+
351
+ また、下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
352
+
353
+ ※標準のDI(Microsoft.Extensions.DependencyInjectionの時)に使えていたPMコマンドではありますが。
354
+
355
+
356
+
357
+ ```txt
358
+
359
+ PM > Add-Migration init -Context TestDbContext -o "Migrations/TestDb"
360
+
361
+ PM > Update-Database -Context TestDbContext
362
+
363
+ ```
364
+
365
+
366
+
367
+ エラー内容
368
+
369
+ ```txt
370
+
371
+ Build started...
372
+
373
+ Build succeeded.
374
+
375
+ Unable to create an object of type 'TestDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
376
+
377
+ ```
378
+
379
+
380
+
381
+ (追記)PMコマンドでエラーしたので、デフォルトの引数無しコンストラクタを追加して対処しました。
382
+
383
+ PMコマンドが実行できるようになりました。
384
+
385
+
386
+
387
+ ```C#
388
+
175
389
  // TestDbContext
176
390
 
177
391
 
@@ -200,6 +414,14 @@
200
414
 
201
415
 
202
416
 
417
+ public TestDbContext() {
418
+
419
+
420
+
421
+ }
422
+
423
+
424
+
203
425
  public TestDbContext(DbContextOptions<TestDbContext> options) : base(options) {
204
426
 
205
427
 
@@ -261,225 +483,3 @@
261
483
  }
262
484
 
263
485
  ```
264
-
265
-
266
-
267
- ```C#
268
-
269
- // App.xaml
270
-
271
-
272
-
273
- using DomainModel;
274
-
275
- using DryIoc;
276
-
277
- using Microsoft.Extensions.Configuration;
278
-
279
- using Prism.DryIoc;
280
-
281
- using Prism.Ioc;
282
-
283
- using System.IO;
284
-
285
- using System.Windows;
286
-
287
- using UserInterface.Views;
288
-
289
-
290
-
291
- namespace UserInterface {
292
-
293
- /// <summary>
294
-
295
- /// Interaction logic for App.xaml
296
-
297
- /// </summary>
298
-
299
- public partial class App {
300
-
301
- protected override Window CreateShell() {
302
-
303
- return Container.Resolve<MainWindow>();
304
-
305
- }
306
-
307
-
308
-
309
- protected override void RegisterTypes(IContainerRegistry containerRegistry) {
310
-
311
- // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも
312
-
313
- // (または依存関係が逆転しない他の方法)
314
-
315
- // IConfiguration configuration = new ConfigurationBuilder()
316
-
317
- // .SetBasePath(Directory.GetCurrentDirectory())
318
-
319
- // .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
320
-
321
- // .Build();
322
-
323
-
324
-
325
- // Drylocを利用する場合
326
-
327
- var container = containerRegistry.GetContainer();
328
-
329
- container.Register<ITestDbContext, TestDbContext>();
330
-
331
- }
332
-
333
- }
334
-
335
- }
336
-
337
- ```
338
-
339
-
340
-
341
- appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませることを検討しようと思います。
342
-
343
- (または依存関係が逆転しない他の方法)
344
-
345
-
346
-
347
- DbContextインターフェースには、DbContextに追加したメソッドは全て定義しなければいけないのかはまだ不明ですが。
348
-
349
-
350
-
351
- また、下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
352
-
353
- ※標準のDI(Microsoft.Extensions.DependencyInjectionの時)に使えていたPMコマンドではありますが。
354
-
355
-
356
-
357
- ```txt
358
-
359
- PM > Add-Migration init -Context TestDbContext -o "Migrations/TestDb"
360
-
361
- PM > Update-Database -Context TestDbContext
362
-
363
- ```
364
-
365
-
366
-
367
- エラー内容
368
-
369
- ```txt
370
-
371
- Build started...
372
-
373
- Build succeeded.
374
-
375
- Unable to create an object of type 'TestDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
376
-
377
- ```
378
-
379
-
380
-
381
- (追記)PMコマンドでエラーしたので、デフォルトの引数無しコンストラクタを追加して対処しました。
382
-
383
- PMコマンドが実行できるようになりました。
384
-
385
-
386
-
387
- ```C#
388
-
389
- // TestDbContext
390
-
391
-
392
-
393
- using Microsoft.EntityFrameworkCore;
394
-
395
- using System;
396
-
397
- using System.Collections.Generic;
398
-
399
- using System.ComponentModel.DataAnnotations;
400
-
401
- using System.Diagnostics;
402
-
403
- using System.Linq;
404
-
405
- using System.Threading;
406
-
407
- using System.Threading.Tasks;
408
-
409
-
410
-
411
- namespace DomainModel {
412
-
413
- public class TestDbContext : DbContext, ITestDbContext {
414
-
415
-
416
-
417
- public TestDbContext() {
418
-
419
-
420
-
421
- }
422
-
423
-
424
-
425
- public TestDbContext(DbContextOptions<TestDbContext> options) : base(options) {
426
-
427
-
428
-
429
- }
430
-
431
-
432
-
433
- public async override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()) {
434
-
435
- // ...
436
-
437
- }
438
-
439
-
440
-
441
- /// <summary>
442
-
443
- /// Override OnModelCreating
444
-
445
- /// </summary>
446
-
447
- /// <param name="modelBuilder"></param>
448
-
449
- protected override void OnModelCreating(ModelBuilder modelBuilder) {
450
-
451
- // ...
452
-
453
-
454
-
455
- base.OnModelCreating(modelBuilder);
456
-
457
- }
458
-
459
-
460
-
461
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
462
-
463
- string connectionString = "Data Source=...";
464
-
465
-
466
-
467
- optionsBuilder.UseSqlServer(connectionString);
468
-
469
- optionsBuilder.UseLazyLoadingProxies();
470
-
471
-
472
-
473
- base.OnConfiguring(optionsBuilder);
474
-
475
- }
476
-
477
-
478
-
479
- public DbSet<Department> Departments { get; set; }
480
-
481
- }
482
-
483
- }
484
-
485
- ```

45

修正

2021/04/09 08:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
- // インターフェースのメソッドを使うわけではなさそうなので、
151
+ // インターフェースのメソッドを使うわけではなさそうなので、
152
152
 
153
153
  // DbContextに追加したメソッドは全て定義しなければいけないのかは不明
154
154
 

44

修正

2021/04/09 08:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
- // インターフェース経由でメソッドを使うわけではなさそうなので、
151
+ // インターフェースでメソッドを使うわけではなさそうなので、
152
152
 
153
153
  // DbContextに追加したメソッドは全て定義しなければいけないのかは不明
154
154
 

43

修正

2021/04/09 08:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,7 +148,9 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
+ // インターフェース経由でメソッドを使うわけではなさそうなので、
152
+
151
- // DbContextに追加したメソッドは全て定義しなければいけないのかは不明
153
+ // DbContextに追加したメソッドは全て定義しなければいけないのかは不明
152
154
 
153
155
 
154
156
 

42

修正

2021/04/09 08:42

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
- ※DbContextに追加したメソッドは全て定義しなければいけないのかは不明
151
+ // ※DbContextに追加したメソッドは全て定義しなければいけないのかは不明
152
152
 
153
153
 
154
154
 

41

修正

2021/04/09 08:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -373,3 +373,111 @@
373
373
  Unable to create an object of type 'TestDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
374
374
 
375
375
  ```
376
+
377
+
378
+
379
+ (追記)PMコマンドでエラーしたので、デフォルトの引数無しコンストラクタを追加して対処しました。
380
+
381
+ PMコマンドが実行できるようになりました。
382
+
383
+
384
+
385
+ ```C#
386
+
387
+ // TestDbContext
388
+
389
+
390
+
391
+ using Microsoft.EntityFrameworkCore;
392
+
393
+ using System;
394
+
395
+ using System.Collections.Generic;
396
+
397
+ using System.ComponentModel.DataAnnotations;
398
+
399
+ using System.Diagnostics;
400
+
401
+ using System.Linq;
402
+
403
+ using System.Threading;
404
+
405
+ using System.Threading.Tasks;
406
+
407
+
408
+
409
+ namespace DomainModel {
410
+
411
+ public class TestDbContext : DbContext, ITestDbContext {
412
+
413
+
414
+
415
+ public TestDbContext() {
416
+
417
+
418
+
419
+ }
420
+
421
+
422
+
423
+ public TestDbContext(DbContextOptions<TestDbContext> options) : base(options) {
424
+
425
+
426
+
427
+ }
428
+
429
+
430
+
431
+ public async override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()) {
432
+
433
+ // ...
434
+
435
+ }
436
+
437
+
438
+
439
+ /// <summary>
440
+
441
+ /// Override OnModelCreating
442
+
443
+ /// </summary>
444
+
445
+ /// <param name="modelBuilder"></param>
446
+
447
+ protected override void OnModelCreating(ModelBuilder modelBuilder) {
448
+
449
+ // ...
450
+
451
+
452
+
453
+ base.OnModelCreating(modelBuilder);
454
+
455
+ }
456
+
457
+
458
+
459
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
460
+
461
+ string connectionString = "Data Source=...";
462
+
463
+
464
+
465
+ optionsBuilder.UseSqlServer(connectionString);
466
+
467
+ optionsBuilder.UseLazyLoadingProxies();
468
+
469
+
470
+
471
+ base.OnConfiguring(optionsBuilder);
472
+
473
+ }
474
+
475
+
476
+
477
+ public DbSet<Department> Departments { get; set; }
478
+
479
+ }
480
+
481
+ }
482
+
483
+ ```

40

修正

2021/04/09 02:44

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -342,11 +342,11 @@
342
342
 
343
343
 
344
344
 
345
- DbContextインターフェースにDbContextに追加したメソッドは全て定義しなければいけないのかはまだ不明ですが。
345
+ DbContextインターフェースには、DbContextに追加したメソッドは全て定義しなければいけないのかはまだ不明ですが。
346
-
347
-
348
-
346
+
347
+
348
+
349
- 下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
349
+ また、下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
350
350
 
351
351
  ※標準のDI(Microsoft.Extensions.DependencyInjectionの時)に使えていたPMコマンドではありますが。
352
352
 

39

修正

2021/04/09 01:20

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
- ※DIで作成するめだのインターフェースなので、空のインターフェースでもいいも?
151
+ ※DbContextに追加しメソッドは全て定義しなればいけのかは不明
152
152
 
153
153
 
154
154
 
@@ -342,6 +342,10 @@
342
342
 
343
343
 
344
344
 
345
+ DbContextインターフェースにDbContextに追加したメソッドは全て定義しなければいけないのかはまだ不明ですが。
346
+
347
+
348
+
345
349
  下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
346
350
 
347
351
  ※標準のDI(Microsoft.Extensions.DependencyInjectionの時)に使えていたPMコマンドではありますが。

38

修正

2021/04/09 01:18

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,11 +148,15 @@
148
148
 
149
149
  public interface ITestDbContext {
150
150
 
151
+ ※DIで作成するためだけのインターフェースなので、空のインターフェースでもいいかも?
152
+
153
+
154
+
151
155
  public Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());
152
156
 
153
157
 
154
158
 
155
- // Test用の適当なクラス ※クラスを使うならいらないかも?
159
+ // Test用の適当なクラス
156
160
 
157
161
  DbSet<Department> Departments { get; set; }
158
162
 

37

修正

2021/04/09 01:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -152,7 +152,7 @@
152
152
 
153
153
 
154
154
 
155
- // Test用の適当なクラス
155
+ // Test用の適当なクラス ※クラスを使うならいらないかも?
156
156
 
157
157
  DbSet<Department> Departments { get; set; }
158
158
 

36

修正

2021/04/09 01:14

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -302,7 +302,9 @@
302
302
 
303
303
  protected override void RegisterTypes(IContainerRegistry containerRegistry) {
304
304
 
305
- // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも(または依存関係が逆転しない他の方法)
305
+ // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも
306
+
307
+ // (または依存関係が逆転しない他の方法)
306
308
 
307
309
  // IConfiguration configuration = new ConfigurationBuilder()
308
310
 
@@ -332,6 +334,8 @@
332
334
 
333
335
  appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませることを検討しようと思います。
334
336
 
337
+ (または依存関係が逆転しない他の方法)
338
+
335
339
 
336
340
 
337
341
  下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。

35

修正

2021/04/09 00:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -302,7 +302,7 @@
302
302
 
303
303
  protected override void RegisterTypes(IContainerRegistry containerRegistry) {
304
304
 
305
- // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも(または依存関係が逆転しない方法)
305
+ // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも(または依存関係が逆転しない他の方法)
306
306
 
307
307
  // IConfiguration configuration = new ConfigurationBuilder()
308
308
 

34

修正

2021/04/09 00:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -302,7 +302,7 @@
302
302
 
303
303
  protected override void RegisterTypes(IContainerRegistry containerRegistry) {
304
304
 
305
- // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも
305
+ // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも(または依存関係が逆転しない方法)
306
306
 
307
307
  // IConfiguration configuration = new ConfigurationBuilder()
308
308
 

33

修正

2021/04/09 00:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -318,7 +318,7 @@
318
318
 
319
319
  var container = containerRegistry.GetContainer();
320
320
 
321
- container.Register<ITestDbContextService, TestDbContext>();
321
+ container.Register<ITestDbContext, TestDbContext>();
322
322
 
323
323
  }
324
324
 

32

修正

2021/04/09 00:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -304,13 +304,13 @@
304
304
 
305
305
  // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも
306
306
 
307
- IConfiguration configuration = new ConfigurationBuilder()
307
+ // IConfiguration configuration = new ConfigurationBuilder()
308
-
308
+
309
- .SetBasePath(Directory.GetCurrentDirectory())
309
+ // .SetBasePath(Directory.GetCurrentDirectory())
310
-
310
+
311
- .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
311
+ // .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
312
-
312
+
313
- .Build();
313
+ // .Build();
314
314
 
315
315
 
316
316
 

31

修正

2021/04/09 00:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -336,7 +336,7 @@
336
336
 
337
337
  下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
338
338
 
339
- ASP.NET Core MVCでは使えていた。
339
+ 標準のDI(Microsoft.Extensions.DependencyInjectionの時)に使えていたPMコマンドではありますが
340
340
 
341
341
 
342
342
 

30

訂正

2021/04/09 00:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -146,7 +146,7 @@
146
146
 
147
147
  namespace DomainModel {
148
148
 
149
- public interface ITestbContext {
149
+ public interface ITestDbContext {
150
150
 
151
151
  public Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());
152
152
 

29

修正

2021/04/09 00:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -130,10 +130,6 @@
130
130
 
131
131
 
132
132
 
133
- DrylocでDbContextを使えるようにDbContextServiceでDbContextを隠蔽しています。
134
-
135
-
136
-
137
133
  ```C#
138
134
 
139
135
  // ITestDbContext

28

修正

2021/04/09 00:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -364,6 +364,4 @@
364
364
 
365
365
  Unable to create an object of type 'TestDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
366
366
 
367
- PM>
368
-
369
- ```
367
+ ```

27

修正

2021/04/09 00:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -198,7 +198,7 @@
198
198
 
199
199
 
200
200
 
201
- public TestDbContext(DbContextOptions<ResistanceMeasureSystemDbContext> options) : base(options) {
201
+ public TestDbContext(DbContextOptions<TestDbContext> options) : base(options) {
202
202
 
203
203
 
204
204
 

26

修正

2021/04/09 00:44

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -198,7 +198,7 @@
198
198
 
199
199
 
200
200
 
201
- public ResistanceMeasureSystemDbContext(DbContextOptions<ResistanceMeasureSystemDbContext> options) : base(options) {
201
+ public TestDbContext(DbContextOptions<ResistanceMeasureSystemDbContext> options) : base(options) {
202
202
 
203
203
 
204
204
 

25

修正

2021/04/09 00:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -124,7 +124,7 @@
124
124
 
125
125
 
126
126
 
127
- (追記)
127
+ (追記 修正) ※元のコードは間違いのため削除しました。
128
128
 
129
129
  BluOxyさんの回答を元に実際のコードを記載しました。
130
130
 
@@ -136,15 +136,29 @@
136
136
 
137
137
  ```C#
138
138
 
139
- // IDbContextService
139
+ // ITestDbContext
140
+
141
+
142
+
140
-
143
+ using Microsoft.EntityFrameworkCore;
144
+
141
-
145
+ using System.Threading;
146
+
142
-
147
+ using System.Threading.Tasks;
148
+
149
+
150
+
143
- namespace DomainService {
151
+ namespace DomainModel {
144
-
152
+
145
- public interface IDbContextService {
153
+ public interface ITestbContext {
154
+
146
-
155
+ public Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());
156
+
157
+
158
+
147
-
159
+ // Test用の適当なクラス
160
+
161
+ DbSet<Department> Departments { get; set; }
148
162
 
149
163
  }
150
164
 
@@ -156,49 +170,161 @@
156
170
 
157
171
  ```C#
158
172
 
159
- // DbContextService
173
+ // TestDbContext
174
+
175
+
176
+
177
+ using Microsoft.EntityFrameworkCore;
178
+
179
+ using System;
180
+
181
+ using System.Collections.Generic;
182
+
183
+ using System.ComponentModel.DataAnnotations;
184
+
185
+ using System.Diagnostics;
186
+
187
+ using System.Linq;
188
+
189
+ using System.Threading;
190
+
191
+ using System.Threading.Tasks;
192
+
193
+
194
+
195
+ namespace DomainModel {
196
+
197
+ public class TestDbContext : DbContext, ITestDbContext {
198
+
199
+
200
+
201
+ public ResistanceMeasureSystemDbContext(DbContextOptions<ResistanceMeasureSystemDbContext> options) : base(options) {
202
+
203
+
204
+
205
+ }
206
+
207
+
208
+
209
+ public async override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()) {
210
+
211
+ // ...
212
+
213
+ }
214
+
215
+
216
+
217
+ /// <summary>
218
+
219
+ /// Override OnModelCreating
220
+
221
+ /// </summary>
222
+
223
+ /// <param name="modelBuilder"></param>
224
+
225
+ protected override void OnModelCreating(ModelBuilder modelBuilder) {
226
+
227
+ // ...
228
+
229
+
230
+
231
+ base.OnModelCreating(modelBuilder);
232
+
233
+ }
234
+
235
+
236
+
237
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
238
+
239
+ string connectionString = "Data Source=...";
240
+
241
+
242
+
243
+ optionsBuilder.UseSqlServer(connectionString);
244
+
245
+ optionsBuilder.UseLazyLoadingProxies();
246
+
247
+
248
+
249
+ base.OnConfiguring(optionsBuilder);
250
+
251
+ }
252
+
253
+
254
+
255
+ public DbSet<Department> Departments { get; set; }
256
+
257
+ }
258
+
259
+ }
260
+
261
+ ```
262
+
263
+
264
+
265
+ ```C#
266
+
267
+ // App.xaml
160
268
 
161
269
 
162
270
 
163
271
  using DomainModel;
164
272
 
273
+ using DryIoc;
274
+
165
- using Microsoft.EntityFrameworkCore;
275
+ using Microsoft.Extensions.Configuration;
276
+
166
-
277
+ using Prism.DryIoc;
278
+
167
-
279
+ using Prism.Ioc;
280
+
168
-
281
+ using System.IO;
282
+
283
+ using System.Windows;
284
+
285
+ using UserInterface.Views;
286
+
287
+
288
+
169
- namespace DomainService {
289
+ namespace UserInterface {
290
+
170
-
291
+ /// <summary>
171
-
172
-
292
+
173
- public class DbContextService : IDbContextService {
293
+ /// Interaction logic for App.xaml
174
-
175
-
176
-
294
+
177
- private readonly TestDbContext _context;
295
+ /// </summary>
178
-
179
-
180
-
296
+
181
- public DbContextService() {
297
+ public partial class App {
182
-
298
+
183
- string connectionString = "***";
299
+ protected override Window CreateShell() {
184
-
185
-
186
-
187
- var optionsBuilder = new DbContextOptionsBuilder<TestDbContext>();
300
+
188
-
189
- optionsBuilder.UseSqlServer(connectionString);
301
+ return Container.Resolve<MainWindow>();
190
-
191
-
192
-
193
- this._context = new TestDbContext(optionsBuilder.Options);
302
+
194
-
195
- }
303
+ }
304
+
305
+
306
+
196
-
307
+ protected override void RegisterTypes(IContainerRegistry containerRegistry) {
308
+
197
-
309
+ // appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませるかも
310
+
198
-
311
+ IConfiguration configuration = new ConfigurationBuilder()
312
+
313
+ .SetBasePath(Directory.GetCurrentDirectory())
314
+
315
+ .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
316
+
317
+ .Build();
318
+
319
+
320
+
199
- // context取得するメソッドが必要かも?
321
+ // Drylocを利用する場合
322
+
200
-
323
+ var container = containerRegistry.GetContainer();
324
+
201
-
325
+ container.Register<ITestDbContextService, TestDbContext>();
326
+
327
+ }
202
328
 
203
329
  }
204
330
 
@@ -208,116 +334,36 @@
208
334
 
209
335
 
210
336
 
211
- ```C#
212
-
213
- // App.xaml
214
-
215
-
216
-
217
- using DomainService;
218
-
219
- using DryIoc;
220
-
221
- using Prism.DryIoc;
222
-
223
- using Prism.Ioc;
224
-
225
- using System.Windows;
226
-
227
- using UserInterface.Views;
228
-
229
-
230
-
231
- namespace UserInterface {
232
-
233
- /// <summary>
234
-
235
- /// Interaction logic for App.xaml
236
-
237
- /// </summary>
238
-
239
- public partial class App {
240
-
241
- protected override Window CreateShell() {
242
-
243
- return Container.Resolve<MainWindow>();
244
-
245
- }
246
-
247
-
248
-
249
- protected override void RegisterTypes(IContainerRegistry containerRegistry) {
250
-
251
- // Drylocを利用する場合
252
-
253
- var container = containerRegistry.GetContainer();
254
-
255
- container.Register<IDbContextService, DbContextService>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
256
-
257
- }
258
-
259
- }
260
-
261
- }
262
-
263
- ```
264
-
265
-
266
-
267
- ```C#
268
-
269
- // MainWindowViewModel
270
-
271
-
272
-
273
- using DomainService;
274
-
275
- using Prism.Mvvm;
276
-
277
-
278
-
279
- namespace UserInterface.ViewModels {
280
-
281
- public class MainWindowViewModel : BindableBase {
282
-
283
- private string _title = "Prism Application";
284
-
285
- public string Title {
286
-
287
- get { return _title; }
288
-
289
- set { SetProperty(ref _title, value); }
290
-
291
- }
292
-
293
-
294
-
295
- public MainWindowViewModel(IDbContextService dbContextService) {
296
-
297
- // MainWindowViewModelでコンストラクタ注入が確認できました。
298
-
299
- var test = dbContextService;
300
-
301
-
302
-
303
- // コンストラクタ内のここでdbContextServiceからcontextを取得する
304
-
305
- }
306
-
307
- }
308
-
309
- }
310
-
311
-
312
-
313
- ```
314
-
315
-
316
-
317
- 設定ファイルのappsettings.jsonから接続文字列を読込したかったのですが、
318
-
319
-
320
-
321
- レイヤー単位でプロジェクトを分けているため
322
-
323
- サービス層のプロジェクトにappsettings.jsonを置くのはどうかなと思い、悩み中です。
337
+ appsettings.jsonはDbContextのDomainModelレイヤーに用意して読み込ませることを検討しようと思います。
338
+
339
+
340
+
341
+ 下記のPMのコマンドが使えなくなってしまいました。プロジェクト(レイヤー)の指定は間違っていないのですが。
342
+
343
+ ※ASP.NET Core MVCでは使えていた。
344
+
345
+
346
+
347
+ ```txt
348
+
349
+ PM > Add-Migration init -Context TestDbContext -o "Migrations/TestDb"
350
+
351
+ PM > Update-Database -Context TestDbContext
352
+
353
+ ```
354
+
355
+
356
+
357
+ エラー内容
358
+
359
+ ```txt
360
+
361
+ Build started...
362
+
363
+ Build succeeded.
364
+
365
+ Unable to create an object of type 'TestDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
366
+
367
+ PM>
368
+
369
+ ```

24

修正

2021/04/09 00:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -194,6 +194,12 @@
194
194
 
195
195
  }
196
196
 
197
+
198
+
199
+ // contextを取得するメソッドが必要かも?
200
+
201
+
202
+
197
203
  }
198
204
 
199
205
  }

23

修正

2021/04/08 09:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -294,7 +294,7 @@
294
294
 
295
295
 
296
296
 
297
- // コンストラクタ内のここでdbContextServiceからcontextをはず
297
+ // コンストラクタ内のここでdbContextServiceからcontextを取得す
298
298
 
299
299
  }
300
300
 

22

修正

2021/04/08 09:44

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -292,6 +292,10 @@
292
292
 
293
293
  var test = dbContextService;
294
294
 
295
+
296
+
297
+ // コンストラクタ内のここでdbContextServiceからcontextを作るはず
298
+
295
299
  }
296
300
 
297
301
  }

21

修正

2021/04/08 09:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -304,7 +304,7 @@
304
304
 
305
305
 
306
306
 
307
- configファイルのappsettings.jsonから接続文字列を読込したかったのですが、
307
+ 設定ファイルのappsettings.jsonから接続文字列を読込したかったのですが、
308
308
 
309
309
 
310
310
 

20

修正

2021/04/08 09:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -190,7 +190,7 @@
190
190
 
191
191
 
192
192
 
193
- this._context = new ResistanceMeasureSystemDbContext(optionsBuilder.Options);
193
+ this._context = new TestDbContext(optionsBuilder.Options);
194
194
 
195
195
  }
196
196
 

19

修正

2021/04/08 09:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  (追記)
128
128
 
129
- BluOxyさんの回答を元に実際コードを記載しました。
129
+ BluOxyさんの回答を元に実際コードを記載しました。
130
130
 
131
131
 
132
132
 

18

修正

2021/04/08 09:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -124,7 +124,13 @@
124
124
 
125
125
 
126
126
 
127
+ (追記)
128
+
129
+ BluOxyさんの回答を元に実際にコードを記載しました。
130
+
131
+
132
+
127
- (追記)DrylocでDbContextを使えるようにDbContextServiceでDbContextを隠蔽しました
133
+ DrylocでDbContextを使えるようにDbContextServiceでDbContextを隠蔽してい
128
134
 
129
135
 
130
136
 

17

修正

2021/04/08 09:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -300,8 +300,8 @@
300
300
 
301
301
  configファイルのappsettings.jsonから接続文字列を読込したかったのですが、
302
302
 
303
+
304
+
305
+ レイヤー単位でプロジェクトを分けているため
306
+
303
- サービス層にappsettings.jsonを置くのはどうかなと思い、悩み中です。
307
+ サービス層のプロジェクトにappsettings.jsonを置くのはどうかなと思い、悩み中です。
304
-
305
-
306
-
307
- (層単位でアプリを分けているため。)

16

修正

2021/04/08 09:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -124,7 +124,7 @@
124
124
 
125
125
 
126
126
 
127
- (追記)
127
+ (追記)DrylocでDbContextを使えるようにDbContextServiceでDbContextを隠蔽しました。
128
128
 
129
129
 
130
130
 

15

修正

2021/04/08 09:27

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -178,7 +178,7 @@
178
178
 
179
179
 
180
180
 
181
- var optionsBuilder = new DbContextOptionsBuilder<ResistanceMeasureSystemDbContext>();
181
+ var optionsBuilder = new DbContextOptionsBuilder<TestDbContext>();
182
182
 
183
183
  optionsBuilder.UseSqlServer(connectionString);
184
184
 

14

追記

2021/04/08 09:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -119,3 +119,189 @@
119
119
 
120
120
 
121
121
  どなたかご教授お願いします。
122
+
123
+
124
+
125
+
126
+
127
+ (追記)
128
+
129
+
130
+
131
+ ```C#
132
+
133
+ // IDbContextService
134
+
135
+
136
+
137
+ namespace DomainService {
138
+
139
+ public interface IDbContextService {
140
+
141
+
142
+
143
+ }
144
+
145
+ }
146
+
147
+ ```
148
+
149
+
150
+
151
+ ```C#
152
+
153
+ // DbContextService
154
+
155
+
156
+
157
+ using DomainModel;
158
+
159
+ using Microsoft.EntityFrameworkCore;
160
+
161
+
162
+
163
+ namespace DomainService {
164
+
165
+
166
+
167
+ public class DbContextService : IDbContextService {
168
+
169
+
170
+
171
+ private readonly TestDbContext _context;
172
+
173
+
174
+
175
+ public DbContextService() {
176
+
177
+ string connectionString = "***";
178
+
179
+
180
+
181
+ var optionsBuilder = new DbContextOptionsBuilder<ResistanceMeasureSystemDbContext>();
182
+
183
+ optionsBuilder.UseSqlServer(connectionString);
184
+
185
+
186
+
187
+ this._context = new ResistanceMeasureSystemDbContext(optionsBuilder.Options);
188
+
189
+ }
190
+
191
+ }
192
+
193
+ }
194
+
195
+ ```
196
+
197
+
198
+
199
+ ```C#
200
+
201
+ // App.xaml
202
+
203
+
204
+
205
+ using DomainService;
206
+
207
+ using DryIoc;
208
+
209
+ using Prism.DryIoc;
210
+
211
+ using Prism.Ioc;
212
+
213
+ using System.Windows;
214
+
215
+ using UserInterface.Views;
216
+
217
+
218
+
219
+ namespace UserInterface {
220
+
221
+ /// <summary>
222
+
223
+ /// Interaction logic for App.xaml
224
+
225
+ /// </summary>
226
+
227
+ public partial class App {
228
+
229
+ protected override Window CreateShell() {
230
+
231
+ return Container.Resolve<MainWindow>();
232
+
233
+ }
234
+
235
+
236
+
237
+ protected override void RegisterTypes(IContainerRegistry containerRegistry) {
238
+
239
+ // Drylocを利用する場合
240
+
241
+ var container = containerRegistry.GetContainer();
242
+
243
+ container.Register<IDbContextService, DbContextService>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
244
+
245
+ }
246
+
247
+ }
248
+
249
+ }
250
+
251
+ ```
252
+
253
+
254
+
255
+ ```C#
256
+
257
+ // MainWindowViewModel
258
+
259
+
260
+
261
+ using DomainService;
262
+
263
+ using Prism.Mvvm;
264
+
265
+
266
+
267
+ namespace UserInterface.ViewModels {
268
+
269
+ public class MainWindowViewModel : BindableBase {
270
+
271
+ private string _title = "Prism Application";
272
+
273
+ public string Title {
274
+
275
+ get { return _title; }
276
+
277
+ set { SetProperty(ref _title, value); }
278
+
279
+ }
280
+
281
+
282
+
283
+ public MainWindowViewModel(IDbContextService dbContextService) {
284
+
285
+ // MainWindowViewModelでコンストラクタ注入が確認できました。
286
+
287
+ var test = dbContextService;
288
+
289
+ }
290
+
291
+ }
292
+
293
+ }
294
+
295
+
296
+
297
+ ```
298
+
299
+
300
+
301
+ configファイルのappsettings.jsonから接続文字列を読込したかったのですが、
302
+
303
+ サービス層にappsettings.jsonを置くのはどうかなと思い、悩み中です。
304
+
305
+
306
+
307
+ (層単位でアプリを分けているため。)

13

修正

2021/04/08 09:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- ただし、WPFで使用しているPrismフレームワークがDrylocを使用していて、上記のMicrosoft.Extensions.DependencyInjection使えないため、Dryloc(またはUnity)が使えればよいのですが。
115
+ ただし、WPFで使用しているPrismフレームワークがDrylocを使用していて、上記のMicrosoft.Extensions.DependencyInjection使えないため、Dryloc(またはUnity)が使えればよいのですが。
116
116
 
117
117
 
118
118
 

12

修正

2021/03/25 00:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないため、Dryloc(またはUnity)が使えればよいのですが。
115
+ ただし、WPFで使用しているPrismフレームワークがDrylocを使用していて、上記のMicrosoft.Extensions.DependencyInjectionは使えないため、Dryloc(またはUnity)が使えればよいのですが。
116
116
 
117
117
 
118
118
 

11

修正

2021/03/25 00:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
  options.UseLazyLoadingProxies();
106
106
 
107
- opions.UseSqlServer(configuration.GetConnectionString("DbConnection"));
107
+ options.UseSqlServer(configuration.GetConnectionString("DbConnection"));
108
108
 
109
109
  });
110
110
 

10

訂正

2021/03/25 00:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないため、Dryloc または Unityが使えればよいのですが。
115
+ WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないため、Dryloc(またはUnity)が使えればよいのですが。
116
116
 
117
117
 
118
118
 

9

修正

2021/03/25 00:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -112,9 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないため、
115
+ WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないため、Dryloc または Unityが使えればよいのですが。
116
-
117
- Dryloc または Unityが使えればよいのですが。
118
116
 
119
117
 
120
118
 

8

訂正

2021/03/25 00:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -3,52 +3,6 @@
3
3
  DrylocにDbContextを設定したいです、ASP.NET Core MVCはデフォルトのコンテナを利用しましたが、
4
4
 
5
5
  WPFアプリ(.NET 5)の場合はなかったので、Drylocを使用したいですが、ネットで調べてもやり方がわかりませんでした。
6
-
7
-
8
-
9
- (追記)
10
-
11
- Microsoft.Extensions.DependencyInjectionにてDbContextを使用する場合。
12
-
13
-
14
-
15
- ```C#
16
-
17
- // Microsoft.Extensions.DependencyInjection の場合
18
-
19
- IConfiguration configuration = new ConfigurationBuilder()
20
-
21
- .SetBasePath(Directory.GetCurrentDirectory())
22
-
23
- .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
24
-
25
- .Build();
26
-
27
-
28
-
29
- IServiceCollection services = new ServiceCollection();
30
-
31
- services.AddDbContext<TestDbContext>(options => {
32
-
33
- options.UseLazyLoadingProxies();
34
-
35
- opions.UseSqlServer(configuration.GetConnectionString("DbConnection"));
36
-
37
- });
38
-
39
- ```
40
-
41
-
42
-
43
- WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないようです。
44
-
45
-
46
-
47
-
48
-
49
- どなたかご教授お願いします。
50
-
51
-
52
6
 
53
7
 
54
8
 
@@ -121,3 +75,49 @@
121
75
  }
122
76
 
123
77
  ```
78
+
79
+
80
+
81
+ (追記)
82
+
83
+ Microsoft.Extensions.DependencyInjectionにてDbContextを使用する場合。
84
+
85
+
86
+
87
+ ```C#
88
+
89
+ // Microsoft.Extensions.DependencyInjection の場合
90
+
91
+ IConfiguration configuration = new ConfigurationBuilder()
92
+
93
+ .SetBasePath(Directory.GetCurrentDirectory())
94
+
95
+ .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
96
+
97
+ .Build();
98
+
99
+
100
+
101
+ IServiceCollection services = new ServiceCollection();
102
+
103
+ services.AddDbContext<TestDbContext>(options => {
104
+
105
+ options.UseLazyLoadingProxies();
106
+
107
+ opions.UseSqlServer(configuration.GetConnectionString("DbConnection"));
108
+
109
+ });
110
+
111
+ ```
112
+
113
+
114
+
115
+ WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないため、
116
+
117
+ Dryloc または Unityが使えればよいのですが。
118
+
119
+
120
+
121
+
122
+
123
+ どなたかご教授お願いします。

7

追記

2021/03/25 00:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,43 @@
6
6
 
7
7
 
8
8
 
9
+ (追記)
10
+
11
+ Microsoft.Extensions.DependencyInjectionにてDbContextを使用する場合。
12
+
13
+
14
+
15
+ ```C#
16
+
17
+ // Microsoft.Extensions.DependencyInjection の場合
18
+
19
+ IConfiguration configuration = new ConfigurationBuilder()
20
+
21
+ .SetBasePath(Directory.GetCurrentDirectory())
22
+
23
+ .AddJsonFile(path: "appsettings.json", optional: true, reloadOnChange: true)
24
+
25
+ .Build();
26
+
27
+
28
+
29
+ IServiceCollection services = new ServiceCollection();
30
+
31
+ services.AddDbContext<TestDbContext>(options => {
32
+
9
- appsettings.jsonから接続文字列の取得まではできています。
33
+ options.UseLazyLoadingProxies();
34
+
35
+ opions.UseSqlServer(configuration.GetConnectionString("DbConnection"));
36
+
37
+ });
38
+
39
+ ```
40
+
41
+
42
+
43
+ WPFで使用しているPrismフレームワークがDrylocを使用していて、Microsoft.Extensions.DependencyInjectionは使えないようです。
44
+
45
+
10
46
 
11
47
 
12
48
 

6

修正

2021/03/25 00:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  // TestDbContext ※Drylocの場合のやり方がわからない。
50
50
 
51
- // container.Register<CustomDbContext>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
51
+ // container.Register<TestDbContext>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
52
52
 
53
53
 
54
54
 

5

修正

2021/03/23 03:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- // CustomDbContext ※Drylocの場合のやり方がわからない。
49
+ // TestDbContext ※Drylocの場合のやり方がわからない。
50
50
 
51
51
  // container.Register<CustomDbContext>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
52
52
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  ASP.NET Core MVC(.NET 5)の場合
58
58
 
59
- services.AddDbContext<CustomDbContext>(options => {
59
+ services.AddDbContext<TestDbContext>(options => {
60
60
 
61
61
  options.UseLazyLoadingProxies();
62
62
 
@@ -74,9 +74,9 @@
74
74
 
75
75
  ```C#
76
76
 
77
- public class AddDbContext : DbContext {
77
+ public class TestDbContext : DbContext {
78
78
 
79
- public AddDbContext(DbContextOptions<AddDbContext> options) : base(options) {
79
+ public TestDbContext(DbContextOptions<AddDbContext> options) : base(options) {
80
80
 
81
81
 
82
82
 

4

修正

2021/03/23 03:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- string connectionString = configuration.GetConnectionString("AddConnection");
39
+ string connectionString = configuration.GetConnectionString("DbConnection");
40
40
 
41
41
 
42
42
 
@@ -46,9 +46,9 @@
46
46
 
47
47
 
48
48
 
49
- // AddDbContext ※Drylocの場合のやり方がわからない。
49
+ // CustomDbContext ※Drylocの場合のやり方がわからない。
50
50
 
51
- // container.Register<AddDbContext>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
51
+ // container.Register<CustomDbContext>(ifAlreadyRegistered: IfAlreadyRegistered.AppendNotKeyed);
52
52
 
53
53
 
54
54
 
@@ -56,11 +56,11 @@
56
56
 
57
57
  ASP.NET Core MVC(.NET 5)の場合
58
58
 
59
- services.AddDbContext<AddDbContext>(options => {
59
+ services.AddDbContext<CustomDbContext>(options => {
60
60
 
61
61
  options.UseLazyLoadingProxies();
62
62
 
63
- options.UseSqlServer(Configuration.GetConnectionString("AddConnection"))
63
+ options.UseSqlServer(Configuration.GetConnectionString("DbConnection"))
64
64
 
65
65
  };
66
66
 

3

修正

2021/03/23 03:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  DrylocにDbContextを設定したいです、ASP.NET Core MVCはデフォルトのコンテナを利用しましたが、
4
4
 
5
- WPFアプリの場合はなかったので、Drylocを使用したいですが、ネットで調べてもやり方がわかりませんでした。
5
+ WPFアプリ(.NET 5)の場合はなかったので、Drylocを使用したいですが、ネットで調べてもやり方がわかりませんでした。
6
6
 
7
7
 
8
8
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  /*
56
56
 
57
- ASP.NET Core MVCの場合
57
+ ASP.NET Core MVC(.NET 5)の場合
58
58
 
59
59
  services.AddDbContext<AddDbContext>(options => {
60
60
 

2

修正

2021/03/23 03:50

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Drylocに追加のDbContextを設定したい。
1
+ DrylocにDbContextを設定したい。
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Drylocに追加のDbContextを設定したいです、ASP.NET Core MVCはデフォルトのコンテナを利用しましたが、
3
+ DrylocにDbContextを設定したいです、ASP.NET Core MVCはデフォルトのコンテナを利用しましたが、
4
4
 
5
5
  WPFアプリの場合はなかったので、Drylocを使用したいですが、ネットで調べてもやり方がわかりませんでした。
6
6
 

1

修正

2021/03/23 03:49

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Drylocに追加のDbContextを設定したいです、ASP.NET Core MVCはデフォルトのコンテナを利用しましたが、
4
4
 
5
- WPFアプリの場合はなかったので、Drylocを使用したいですが、やり方がわかりませんでした。
5
+ WPFアプリの場合はなかったので、Drylocを使用したいですが、ネットで調べてもやり方がわかりませんでした。
6
6
 
7
7
 
8
8