노력으로 단위 테스트 - 신원을 해제하여 레코드 추가하기

effort mstest objectcontext unit-testing

문제

Effort (EF4 용)를 사용하여 일부 단위 테스트를하고 있습니다.

var ctx= Effort.ObjectContextFactory.CreateTransient<TheContext>(Shared.Connection);
ctx.companies.AddObject(new company() { ID = 100, name = "Agent", is_agent = true });
ctx.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave);

회사의 ID 열은 ID 필드입니다. 위의 쿼리를 실행 한 후 ID 값은 100 대신 1입니다. Effort를 사용하는 동안 Identity_insert를 제어 할 수있는 방법이 있습니까?

수락 된 답변

이것은이 스레드에 솔루션을 추가하는 것입니다. @MrBlueSky는 위의 주석에 솔루션의 완성 된 링크 를 추가합니다. 그러나 링크에서 사용되는 DbConfiguration 은 최신 노력에서 더 이상 존재하지 않습니다. 해결책은 여전히 Effort.EF6 [version="1.3.0"] 있습니다. 그리고 SetIdentityFields 에서 EffortConnection.DbManager 메서드를 사용하여 ID 필드를 설정하거나 해제 할 수 있습니다

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}

켜기

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.