实体框架单元测试 - 功能评估需要所有线程运行

时间:2013-07-23 02:36:39

标签: entity-framework unit-testing

我正在尝试在projet上创建一个简单的单元测试以测试我与数据库的连接,但每次运行我的测试时,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";
            }
        }
    }

感谢您的帮助。 安东尼

0 个答案:

没有答案