努力(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合法吗? 是的,了解原因