从内存数据库中获取不起作用

时间:2015-12-23 15:20:30

标签: c# .net visual-studio unit-testing effort

我开始使用Effort进行单元测试。

这是我的初始化代码:

    private IUnitOfWork unitOfWork;

    [TestInitialize]
    public void SetupTest()
    {
        DbConnection connection = Effort.DbConnectionFactory.CreateTransient();

        var context = new STContext(connection);

        context.Fakturas.Add(new Faktura { ID = 1, FakturaNo = 1000, OwnerID = 1 });
        context.Fakturas.Add(new Faktura { ID = 2, FakturaNo = 1001, OwnerID = 1 });

        context.Products.Add(new Product { ID = 1, Name = "ProductA", Price = 50 });
        context.Products.Add(new Product { ID = 2, Name = "ProductB", Price = 100 });

        context.Orders.Add(new Order { ID = 1, FakturaID = 1, ProductID = 1, Quantity = 1 });
        context.Orders.Add(new Order { ID = 2, FakturaID = 2, ProductID = 1, Quantity = 1 });

        unitOfWork = new UnitOfWork(context);
    }

然后,当我调试测试时,我可以在调试器中看到上面代码中的那些值存在,它们被插入到内存数据库中,但是获取查询不会返回它们。以下是调试器的图像:enter image description here

这是返回0个元素return unitOfWork.Context.Products.ToList();

的查询之一

任何人都知道可能导致问题的原因是什么?

更新:此代码通过:return unitOfWork.Context.Products.Local.ToList<Product>();

更新2:我解决了。 SetupTest方法中缺少保存更改:

context.SaveChanges();

0 个答案:

没有答案