【问题标题】:"Sequence contains no matching element" setting HasColumnType("varchar") in EF Mappings using Effort“序列不包含匹配元素”在使用 Effort 的 EF 映射中设置 HasColumnType("varchar")
【发布时间】:2018-11-02 16:03:45
【问题描述】:

我有以下实体框架 (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:序列不包含匹配元素

我在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());

这可能是因为我使用的是 Effort MemoryContext 与 Real DB 上下文吗?

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

【问题讨论】:

  • 您好,是否可以共享在您的单元测试中引发错误的代码?
  • @philreed 我刚刚添加了这些细节。谢谢
  • 谢谢。您在哪一行看到错误System.InvalidOperationException: Sequence contains no matching element
  • 我在帖子中添加一个项目到DistributionListSelectionCriteriaDepartmentEntities的测试方法的第一行

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多