我具有以下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
该类是我初始化实体映射的地方:
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();
}
答案 0 :(得分:0)
我知道那是什么。原来我正在使用Effort
库,该库不支持@Balah指出的某些列类型。来自内存上下文时,我用他的技术绕过了实体映射配置:
Effort (EF Unit Testing) giving errors