Entity Framework 코어 - 메모리 공급자 필수 필드

effort entity-framework-core

문제

이전 버전의 Entity Framework에서는 단위 테스트를 위해 노력 ( https://effort.codeplex.com/ )을 사용했습니다. EF 코어 용 메모리 공급자를 새로 제공하기로 결정하고 OnModelCreating에서 설정 한 IsRequired () 및 기타 엔터티 구성을 따르지 않는다는 것을 곧 알게되었습니다. 이 구성을 존중할 수있는 방법이 있습니까? 그렇지 않다면 실행 목록에 구현 되나요? 아마 메모리 공급자의 대안일까요?

테스트 단계를 사용하여 동일한 코드를 활용할 수있는 일부 통합 테스트 시나리오에서 컨텍스트를 교체하고 실제 데이터베이스를 사용할 수 있기를 원합니다. 이것은 "가지고있는 것이 좋을 것"같고, 어쩌면 EF 코어를 사용하는 경우 일 수 있습니다. EF 코어에 대한 노력이 아직 이루어지지 않았습니다.

EF ( https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions )에 대한 Uservoice 페이지에서 아무 것도 찾을 수 없었고 사용할 수없는 경우 다음으로 이동합니다.

인기 답변

이 질문은 꽤 뒤로 물어 보았습니다. 그러나 나는 같은 질문을 던졌고이 답이없는 질문을 우연히 발견했습니다. 나는 나를 위해 일하는 답을 찾는 것을 끝내었다. 그래서 나는 내가했던 것처럼 누군가 다른 사람이 뛰어 다니는 경우를 대비해서 나눌 것을 생각했다.

SQLite는 표준 UseInMemory () 옵션보다 실제 데이터베이스와 같은 역할을하는 메모리 옵션을 가지고있는 것으로 보입니다 : https://docs.microsoft.com/en-us/ef/core/miscellaneous/testing/sqlite

유일한 차이점은 Microsoft.EntityFrameworkCore.Sqlite 가 아니라 Microsoft.Data.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는 합법적입니까? 예, 이유를 알아보십시오.