我正在尝试在项目上创建一个简单的单元测试,以测试我与数据库的连接,但是每次我运行测试时,DbContext 都会向我抛出以下错误:该函数需要所有线程才能运行。
这是我的单元测试:
[TestMethod]
public void CanReadObjectFromContext()
{
using (var context = new DbAccess())
{
var blogger = context.Set<Blog>().ToList();
Assert.IsTrue(blogger.Any());
}
}
这是我的 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();
}
}
我的 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";
}
}
}
感谢您的帮助。安东尼