ASP.NET Core Web APIで、DbContext
サービスにを追加します。
services.AddDbContext<OpContext>(options => options.UseSqlServer(Configuration["DatabaseConnectionString"]));
問題は、私のdbcontextが3つのコンストラクターであることです。
public partial class UppContext : DbContext
{
public UppContext() : base()
{ }
public UppContext(DbContextOptions<DbContext> options) : base(options)
{ }
public UppContext(IIdentificationService idService) : base()
{
_idService = idService;
}
そしてOpContext
、上記から継承します:
public partial class OpContext : UppContext
{
public OpContext() : base() { }
public OpContext(IIdentificationService idService) : base(idService) { }
public OpContext(DbContextOptions<DbContext> options) : base(options) { }
}
また、オプション付きのものを呼び出す代わりに、常にパラメーターなしのコンストラクターを呼び出します。したがって、私の接続は機能しません。
これは私がコントローラーにそれを注入するところです:
public RequestController(OpContext dbContext)
{
cxt = dbContext;
persistenceManager = new OpPersistenceManager(dbContext);
}
これは実際の例外です:
System.InvalidOperationException HResult = 0x80131509メッセージ=このDbContextにデータベースプロバイダーが構成されていません。プロバイダーは、DbContext.OnConfigureメソッドをオーバーライドするか、アプリケーションサービスプロバイダーでAddDbContextを使用して構成できます。AddDbContextを使用する場合は、DbContext型がコンストラクターでDbContextOptionsオブジェクトを受け入れ、それをDbContextの基本コンストラクターに渡すことも確認してください。
Source = Microsoft.EntityFrameworkCore StackTrace:at Microsoft.EntityFrameworkCore.Internal.DbContextServices.Initialize(IServiceProvider scopedProvider、IDbContextOptions contextOptions、DbContext context)
Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()、Microsoft.EntityFrameworkCore.DbContext.get_ChangeTracker()、Breeze.Persistence.EFCore.EFPersistenceManager`1..ctor(Tコンテキスト)
Op.Authors.Api.Breeze.OpPersistenceManager..ctor(OpContext dbContext)in C:\ dev \ UPS \ Source \ Op \ Op.Authors.Api \ Breeze \ OpPersistenceManager.cs:line 8 atOp.Authors.Api。 Controllers.RequestController..ctor(OpContext dbContext)in C:\ dev \ UPS \ Source \ Op \ Op.Authors.Api \ Controllers \ RequestController.cs:line 21 atMicrosoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider。<> c__DisplayClass4_0 .b__0(ControllerContext controllerContext)atMicrosoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider。<> c__DisplayClass5_0.g__CreateController | 0(ControllerContext controllerContext)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State&next、Scope&scope、Object&state、 Boolean&isCompleted)Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
私は何かが足りないのですか?
免責事項:私はあなたのコードを複製しましたが、1レベルの継承があります。
変化
public OpContext(DbContextOptions<DbContext> options) : base(options) { }
に
public OpContext(DbContextOptions<OpContext> options) : base(options) { }
私のために問題を解決しました。
DbContextOptionsのtype引数に注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加