"시퀀스에 일치하는 요소가 없습니다."Effort를 사용하여 EF 매핑에 HasColumnType ( "varchar")을 설정합니다.

.net c# effort entity-framework-6

문제

다음 Entity Framework (v6.1.3) 매핑이 있습니다.

public class FileStoreDocumentEntityMapping : EntityTypeConfiguration<FileStoreDocumentEntity>
{
    public FileStoreDocumentEntityMapping()
    {
        Property(x => x.FileStoreDownloadUrl)
            .HasColumnName("FileStoreDetailsUrl")
            .HasColumnType("varchar")
            .HasMaxLength(1000);
        Property(x => x.FileStoreVersion)
            .HasColumnName("FileStoreVersion")
            .HasColumnType("varchar")
            .HasMaxLength(100);
    }
}

두 열 모두 내 데이터베이스의 데이터 유형 = "varchar"이고 크기는 정확합니다. 여기에 이미지 설명을 입력하십시오.

그러나이 오류로 인해 일부 단위 테스트가 실패합니다.

" System.InvalidOperationException : 시퀀스에 일치하는 요소가 없습니다 "

내가 HasColumnType 메서드에 잘못된 형식을 전달하지만 위의 "varchar"가 유효해야 위 오류를 얻을 수있는 관련 게시물 을 읽었습니다.

어떤 아이디어가 잘못 될 수 있습니까?

내 개체에서 이러한 속성을 정의하는 방법은 다음과 같습니다.

    public virtual string FileStoreVersion
    {
        get;
        set;
    }

    public virtual string FileStoreDetailsUrl
    {
        get;
        set;
    }

다음은 첫 번째 줄에서 실패한 하나의 테스트의 예입니다.

    [TestMethod]
    public void Delete_ReturnsSuccess()
    {
        _context.DistributionListSelectionCriteriaDepartmentEntities.Add(_distributionListSelectionCriteriaDepartmentEntity);

이 경우 _context_context 유형 MemoryEnterprisePaycorCodeFirstContext .

    private void InitializeTestObjects()
    {
        _context = new MemoryEnterprisePaycorCodeFirstContext();

public class EnterprisePaycorCodeFirstContext : DbContext 에서 상속 public class EnterprisePaycorCodeFirstContext : DbContext

이 클래스는 엔티티 매핑을 초기화하는 곳입니다.

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new FileStoreDocumentEntityMapping());

Effort MemoryContext 대 Real DB 컨텍스트를 사용하고 있기 때문에 이것이 가능합니까?

public class MemoryEnterprisePaycorCodeFirstContext : EnterprisePaycorCodeFirstContext
{
    public MemoryEnterprisePaycorCodeFirstContext()
        : base(DbConnectionFactory.CreateTransient())
    {
        Database.CreateIfNotExists();
    }

수락 된 답변

나는 그것이 무엇인지에 관해 알았다. @Balah가 지적한대로 일부 열 유형을 지원하지 않는 Effort 라이브러리를 사용하고 있었다는 것을 알게되었습니다. 그의 기술을 사용하여 내 메모리 컨텍스트에서 올 때 엔티티 매핑 구성을 우회했습니다 : 오류 (EF Unit Testing)



Related

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