努力(EF單元測試)給出錯誤

c# effort entity-framework unit-testing

我試圖對一些實體框架數據庫上下文回复的類進行單元測試。為了獲得幫助,我設法找到了一個名為Effort的庫,這個庫似乎有點陳舊,而且記錄不多,但似乎很有用,而且似乎很受歡迎。

我正在嘗試使用CSV數據加載器。

在做ToArray()我收到一個異常,說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的模型構建器約定,我仍然得到完全相同的錯誤。我猜你的一個實體有那個數據註釋(或慣例)?

如果是這種情況,最簡單的解決方法是刪除數據註釋。如果不可能,我在我的測試中覆蓋的DbContext上創建了一個虛擬屬性(例如public virtual bool IsInMemoryContext { get; } = false; ) - public override bool IsInMemoryContext { get; } = true; ,在OnModelCreating方法中,我在添加列類型之前檢查了是否已設置此屬性。

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

有關錯誤的更多信息可以在這裡找到: GitHub與Effort的問題




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因