使用努力在EF映射中的“序列不包含匹配元素”设置HasColumnType(“ varchar”)

时间:2018-11-02 16:03:45

标签: c# .net entity-framework-6 effort

我具有以下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”,并且大小正确: enter image description here

但是,我的某些单元测试因此错误而失败:

System.InvalidOperationException:序列不包含匹配的元素

我读到related post,如果将无效的类型传递给HasColumnType方法,但是在我的情况下,“ varchar”应该是有效的,您会得到上面的错误。

任何想法可能有什么问题吗?

以下是在我的实体中定义这些属性的方式:

    public virtual string FileStoreVersion
    {
        get;
        set;
    }

    public virtual string FileStoreDetailsUrl
    {
        get;
        set;
    }

下面是一个在第一行中失败的测试的示例:

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

_context在这种情况下的类型为MemoryEnterprisePaycorCodeFirstContext

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

哪个继承自我的public class EnterprisePaycorCodeFirstContext : DbContext

该类是我初始化实体映射的地方:

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

这可能是因为我正在使用努力 MemoryContext与Real DB上下文吗?

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

1 个答案:

答案 0 :(得分:0)

我知道那是什么。原来我正在使用Effort库,该库不支持@Balah指出的某些列类型。来自内存上下文时,我用他的技术绕过了实体映射配置: Effort (EF Unit Testing) giving errors