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は、 MemoryEnterprisePaycorCodeFirstContextMemoryEnterprisePaycorCodeFirstContext

    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単体テスト)



Related

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