记录复杂的ORM查询

记录复杂的ORM查询,orm,documentation,Orm,Documentation,您发现记录复杂ORM查询(特别是LINQ to EF查询或nHibernate条件查询)的最佳方式是什么?针对服务层的单元测试或规范 [TestMethod] public void ItemsForBill_returns_expected_items_with_explicit_customer_id() { var customer = new Customer { Id = new Guid("{AB2F33FA-92E0-4B7C-8720-90

您发现记录复杂ORM查询(特别是LINQ to EF查询或nHibernate条件查询)的最佳方式是什么?

针对服务层的单元测试或规范

    [TestMethod]
    public void ItemsForBill_returns_expected_items_with_explicit_customer_id()
    {
        var customer = new Customer { Id = new Guid("{AB2F33FA-92E0-4B7C-8720-901CD9918796}") };
        var expectedItemId = new Guid("{B1493898-A832-4D83-A134-77790673A6D6}");
        var start = new DateTime(2010, 1, 1);
        var stop = new DateTime(2010, 1, 31);
        var items = new[] 
        {
            new Item 
            {
                Description = "Date out of range",
                ItemDate = new DateTime(2010, 2, 10),
                Payer = customer,
                PayerCustomerId = customer.Id
            },
            new Item 
            {
                Description = "Should be included",
                Id = expectedItemId,
                ItemDate = new DateTime(2010, 1, 10),
                Payer = customer,
                PayerCustomerId = customer.Id
            },
            new Item 
            {
                Description = "Wrong payer",
                ItemDate = new DateTime(2010, 1, 10),
                Payer = new Customer()
            }
        };
        var uow = new FakeBillingUnitOfWork();
        uow.SetTestData(items.ToList());
        var activity = new SelectItemsForBillingRun();
        var input = new BillingRun
        {
            OneCustomerId = customer.Id,
            Start = start,
            Stop = stop
        };

        var result = activity.ItemsForBillingRun(uow, input);

        Assert.IsNotNull(result);
        Assert.AreEqual(1, result.Count());
        var returned = result.Single();
        Assert.AreEqual(expectedItemId, returned.Id);
    }

当然我添加了一个非常简单的示例,它不需要了解我们的业务领域。大多数例子都比较复杂。这样做的好处是你不只是解释你的推理;你证明了,谢谢。答案很简单,但你给了我很多思考和与同事讨论的机会。