"Sequence contains no matching element" 使用 Effort 在 EF 映射中设置 HasColumnType("varchar")
"Sequence contains no matching element" setting HasColumnType("varchar") in EF Mappings using 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" 并且大小正确:
但是,我的一些单元测试因以下错误而失败:
"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
class 是我初始化实体映射的地方:
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();
}
我想通了。原来我使用的是 Effort
库,它不支持@Balah 指出的某些列类型。当来自我的内存上下文时,我使用他的技术绕过实体映射配置:
Effort (EF Unit Testing) giving errors
我有以下 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: 序列不包含匹配元素"
我在 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
class 是我初始化实体映射的地方:
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();
}
我想通了。原来我使用的是 Effort
库,它不支持@Balah 指出的某些列类型。当来自我的内存上下文时,我使用他的技术绕过实体映射配置:
Effort (EF Unit Testing) giving errors