I'm trying to create a simple Unit test on a projet in order to test my connection to my database, but each time i run my test, the DbContext throw me the following error : The function requires all thread to run.
Here my unit test :
[TestMethod]
public void CanReadObjectFromContext()
{
using (var context = new DbAccess())
{
var blogger = context.Set<Blog>().ToList();
Assert.IsTrue(blogger.Any());
}
}
Here my DbContext
public class DbAccess : BaseContext<DbAccess>
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new BlogConfiguration());
}
private void ApplyRules()
{
foreach (var entry in this.ChangeTracker.Entries().Where(e=>e.Entity is IAuditInfo && (e.State == EntityState.Added || e.State == EntityState.Modified)))
{
var e = (IAuditInfo) entry.Entity;
if (entry.State == EntityState.Added)
e.CreatedOn = DateTime.Now;
e.ModifiedOn = DateTime.Now;
}
}
public override int SaveChanges()
{
ApplyRules();
return base.SaveChanges();
}
}
And my base class for my DbContext
public class BaseContext<TContext> : DbContext where TContext : DbContext
{
static BaseContext()
{
// On s'assure que le BdContext ne va pas faire d'action de modifciationsur notre base de données
// Ici nous avons déjà une base de données existante
Database.SetInitializer<TContext>(null);
}
protected BaseContext()
: base(ConnectionStringName)
{
}
public static string ConnectionStringName
{
get
{
if (ConfigurationManager.AppSettings["ConnectionStringName"] != null)
return ConfigurationManager.AppSettings["ConnectionStringName"];
return "SqlConnection";
}
}
}
Thank for your help. Anthony