J'ai le mappage Entity Framework (v6.1.3) suivant:
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);
}
}
Les deux colonnes sont de type de données = "varchar" dans ma base de données et leurs tailles sont correctes:
Cependant, certains de mes tests unitaires échouent avec cette erreur:
" System.InvalidOperationException: la séquence ne contient aucun élément correspondant "
J'ai lu dans un article lié que vous pouvez obtenir l'erreur ci-dessus si vous transmettez un type non valide à la méthode HasColumnType
mais que dans mon cas, "varchar" doit être valide.
Des idées ce qui pourrait être le problème?
Voici comment ces propriétés sont définies dans mon entité:
public virtual string FileStoreVersion
{
get;
set;
}
public virtual string FileStoreDetailsUrl
{
get;
set;
}
Voici un exemple d'un test qui échoue à la première ligne:
[TestMethod]
public void Delete_ReturnsSuccess()
{
_context.DistributionListSelectionCriteriaDepartmentEntities.Add(_distributionListSelectionCriteriaDepartmentEntity);
_context
dans ce cas de type MemoryEnterprisePaycorCodeFirstContext
:
private void InitializeTestObjects()
{
_context = new MemoryEnterprisePaycorCodeFirstContext();
Qui hérite de ma public class EnterprisePaycorCodeFirstContext : DbContext
C'est dans cette classe que j'initialise mes mappages d'entités:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new FileStoreDocumentEntityMapping());
Cela est-il dû au fait que j'utilise Effort MemoryContext vs un contexte Real DB?
public class MemoryEnterprisePaycorCodeFirstContext : EnterprisePaycorCodeFirstContext
{
public MemoryEnterprisePaycorCodeFirstContext()
: base(DbConnectionFactory.CreateTransient())
{
Database.CreateIfNotExists();
}
J'ai compris ce que c'était. Il s'avère que j'utilisais la bibliothèque Effort
, qui ne prend pas en charge certains types de colonne, comme l'a souligné @Balah. J'ai utilisé sa technique pour contourner la configuration du mappage d'entités lorsque je venais de ma mémoire Contexte: Effort (EF Unit Testing) donnant des erreurs