エフォート(EFユニットテスト)エラーを出す


質問

私は、Entity Framework DB Contextで返答するいくつかのクラスについてユニットテストをしようとしています。助けを求めて、私はEffortと呼ばれるライブラリを見つけることができました。これは少し古くてよく書かれていないようですが、うまくいくと思われ、かなり普及しているようです。

私はCSVデータローダーを使用しようとしています。

ToArray()を実行すると、 Sequence contains no matching elementという例外が発生しSequence contains no matching element

私が間違って何をしているのかについてのアイデアはありますか?あるいは別のライブラリではない場合は、チャンスを与えたいかもしれませんか?

いくつかのスニペット:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

DBコンテキスト:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

SEC_USER.csv:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

テスト:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

System.InvalidOperationException:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

人気のある回答

私はちょうどこの問題を抱えており、問題はColumnTypeデータアノテーションを使用していることがわかった。私がHasColumnTypeモデルビルダーの規約を使用するように変更したとしても、まったく同じエラーが発生しました。あなたのエンティティの1つがそのデータ注釈(または規約)を持っていると思いますか?

その場合、最も簡単な修正はデータアノテーションを削除することです。可能でない場合は、テストでpublic override bool IsInMemoryContext { get; } = true;れたDbContextの仮想プロパティ( public virtual bool IsInMemoryContext { get; } = false; )を作成しました。public public override bool IsInMemoryContext { get; } = true; OnModelCreatingメソッドでは、列の種類を追加する前に、このプロパティが設定されているかどうかを確認しました。

if (!IsInMemoryContext)
{
    modelBuilder.Entity<AuditLog>()
        .Property(e => e.EventType)
        .HasColumnType("char");
}

エラーの詳細については、こちらを参照してください: GitHub issue with Effort





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