Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架和DbContext测试问题_C#_Entity Framework_Unit Testing - Fatal编程技术网

C# 使用实体框架和DbContext测试问题

C# 使用实体框架和DbContext测试问题,c#,entity-framework,unit-testing,C#,Entity Framework,Unit Testing,我正在进行一个项目,希望测试一些使用实体框架的类。在这个过程中,我创建了一个testdbcontext class FakeContext : DbContext, IDbContext { public IDbSet<UserAcc> UserAcc { set; get; } public IDbSet<Movies> Movies { set; get; } public new IDbSet<T> Set<T>()

我正在进行一个项目,希望测试一些使用实体框架的类。在这个过程中,我创建了一个testdbcontext

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());
    }
 }
类FakeContext:DbContext,IDbContext { 公共IDbSet UserAcc{set;get;} 公共IDbSet电影{set;get;} public new IDbSet Set(),其中T:class { 返回base.Set(); } } [测试类] 公共类测试 { 专用IStorageConnection\u ef; [测试方法] public void AddToContextTest() { _ef=新的EFConnectionFactory().GetConnection(); _添加(新的UserAcc()); _ef.SaveChanges(); AreEqual(1,_ef.Get().Count()); } }
当我尝试将实体添加到上下文中时,我假设它将保留在内存中,但它会被VisualStudio自动保存在某个位置。自动创建的数据库位于何处?

默认情况下,EF会在SQL server express上创建名称等于完整数据上下文类名的数据库。也就是说,在你的情况下

 server=.\SQLEXPRESS;database=Your.Namespace.FakeContext
顺便说一句,我不建议您在测试中使用真实的数据库,如果您不进行验收测试,这是缓慢、脆弱和耗时的