Entity Frameworkコア - インメモリプロバイダ必須フィールド

effort entity-framework-core

質問

以前のバージョンのEntity Frameworkでは、ユニットテストにEffort( https://effort.codeplex.com/ )を使用していました。私は、EF Coreの新しいメモリプロバイダを提供することに決め、OnModelCreatingで設定されたIsRequired()やその他のエンティティコンフィグレーションを尊重しないことをすぐに発見しました。この構成を尊重する方法はありますか?そうでない場合は、これをToDoリストに実装するのですか?たぶんメモリプロバイダの代替ですか?

私はテストステップを使用してコンテキストを交換し、同じコードを活用できる統合テストシナリオで実際のdbを使用したいと考えています。これは「持っているのがいい」のように思えますが、それはEFコアでの作業の場合です。私はまだEFコアのために働いていることについては何も見つけられませんでした。

EF( https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions )用のUservoiceページで何も見つけられず、利用できない場合は次に表示されます。

人気のある回答

この質問はかなり後に聞かれましたが、私は同じ質問をして、この未解決の問題を見つけました。私は私のために働く答えを見つけることになったので、他の誰かが私のように走ってもらうために分け合うと思った。

SQLiteには、標準のUseInMemory()オプションよりも実際のデータベースのように機能するin memoryオプションがあるようです。https ://docs.microsoft.com/en-us/ef/core/miscellaneous/testing/sqlite

唯一の違いは、私はドキュメントのようなMicrosoft.Data.Sqliteは言いません、Microsoft.EntityFrameworkCore.Sqlite加えました。

質問に完全に関連しているわけではありませんが、私の特別なケースでは、私が作業しているwebapiの基本的な機能をテストしている間にメモリを使いたいと思っていますが、まだユニークな制約などをテストできるようにしたいメモリ内のデータベースを実装するために追加したものです。

構成サービス内:

services.AddDbContext<MyDbContext>(options =>
{
    var liteConn = new SqliteConnection("DataSource=:memory:");
    liteConn.Open();

    options
        .UseSqlite(liteConn)
        .ConfigureWarnings(warnings =>
        {
            warnings.Throw(RelationalEventId.QueryClientEvaluationWarning);
            warnings.Log(RelationalEventId.ExecutedCommand);
        });
});

設定内:

services.AddDbContext<MyDbContext>(options =>
{
    var liteConn = new SqliteConnection("DataSource=:memory:");
    liteConn.Open();

    options
        .UseSqlite(liteConn)
        .ConfigureWarnings(warnings =>
        {
            warnings.Throw(RelationalEventId.QueryClientEvaluationWarning);
            warnings.Log(RelationalEventId.ExecutedCommand);
        });
});



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ