У меня есть следующее сопоставление 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: последовательность не содержит соответствующего элемента "
Я прочитал в связанном посте, что вы можете получить ошибку выше, если вы передадите неверный тип методу 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();
}
Я понял, что это было. Оказывается, я использовал библиотеку Effort
которая не поддерживает некоторые типы столбцов, на что указывает @Balah. Я использовал свою технику , чтобы обойти конфигурацию отображения объекта при выходе из моего контекста памяти: Усилия (EF Testing Unit) , давая ошибок