使用Entity框架和DbContext测试问题

时间:2013-11-30 16:50:38

标签: c# entity-framework unit-testing

我正在开发一个项目,我希望测试一些使用实体框架的类。在那个过程中,我创建了一个测试DbContext。

class FakeContext : DbContext, IDbContext
{
    public IDbSet<UserAcc> UserAcc { set; get; }
    public IDbSet<Movies> Movies { set; get; }

    public new IDbSet<T> Set<T>() where T : class
    {
        return base.Set<T>();
    }
}

[TestClass]
public class EFStorageTest
{
    private IStorageConnection _ef;

    [TestMethod]
    public void AddToContextTest()
    {
        _ef = new EFConnectionFactory().GetConnection<FakeContext>();
        _ef.Add(new UserAcc());
        _ef.SaveChanges();
        Assert.AreEqual(1, _ef.Get<UserAcc>().Count());
    }
 }

当我尝试将一个实体添加到我的上下文中时,我认为它将保留在内存中,但它会被Visual Studio自动保存到某处。自动创建的数据库位于何处?

1 个答案:

答案 0 :(得分:0)

默认情况下,EF在SQL Server express上创建数据库,其名称等于完整数据上下文类名。即在你的情况下它将是

 server=.\SQLEXPRESS;database=Your.Namespace.FakeContext

BTW我不建议你在测试中使用真正的数据库,如果你没有进行验收测试 - 这是缓慢,脆弱和耗时的