1.-まずコントローラにdbcontextエンティティにアクセスするために使用されるコードブロックの下
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(@"Server=(local);Database=VotingAppDB;User ID=sa;Password=123;");
}
}
私の場合は、UnitOfWorkを使用してIUnitOfWork instanとして注入すると、あなたのコードをテストできないものにするので、依存関係を使って 'new'を使用しないでください実際には、MyConextの拡張であり、StartUpクラス内に挿入します。これを行うには、次のようなプライベートメソッド(1つのプライベートコールでこれを実行する)があります。
プライベートvoid AddEntityFrameworkAndDbContext(IServiceCollectionサービス) { services.AddEntityFrameworkSqlServer();
var migrationsAssemblyName = typeof(MyContext).GetTypeInfo().Assembly.GetName().Name;
services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(
"MY CONNECTION STRING GOES HERE (BUT I RETREIVE IT FROM ANOTHER SERVICE)",
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.MigrationsAssembly(migrationsAssemblyName);
sqlOptions.EnableRetryOnFailure(maxRetryCount: 5, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null);
});
},
ServiceLifetime.Scoped // Showing explicitly that the DbContext is shared across the HTTP request scope (graph of objects started in the HTTP request)
).AddUnitOfWork<MyContext>(); // This is because I'm also using EF Core Unit of work NuGet Package
}
私が言ったように私は(第二2.-起動クラスで
// Add EF, and UoW
AddEntityFrameworkAndDbContext(services);
、ConfigureServices(IServiceCollectionサービス)からそのプライベートメソッドを呼んでいるが、私はこれがあなたであることを言うだろう本当の問題)私はあなたがbase.OnConfiguring(オプション)を逃したと言うでしょう。 UnitOfWorkのプロジェクトは読書に値することを、取る、また How to setup EF6 Migrations with ASP.NET Core
:また、私は数週間前に書いたこの答えをご覧ください
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(@"Server=(local);Database=VotingAppDB;User ID=sa;Password=123;");
}
base.OnConfiguring(optionsBuilder);
}
:あなたのコンテキストでは、それは次のようにする必要がありますここでそれを見て:私はそれが役に立てば幸いhttps://github.com/arch/UnitOfWork
、
ファンを
私は正確な問題があります。これまでのところどのように修正するのか分かりません。 – hidden
あなたのデータベースにはスキーマがありますか?私がスキーマを削除した後、足場を動かし始めた。 – hidden
私の問題が見つかりました。私はVARCHAR(max)を使用して列の長さを定義しました。何とかEFがそれを理解せず、暗黙に失敗します。 – hidden