单一查询


  Get / GetAsync 方法用于根据一组主键值获取一个单一的对象。

[TestMethod]
public void TestGet()
{
    using (var db = new DbContext())
    {
        var product = db.Products.Get(12);
        Assert.AreEqual(12, product.ProductID);

        var customer = db.Customers.Get("VINET");
        Assert.AreEqual("VINET", customer.CustomerID);
    }
}

[TestMethod]
public async Task TestGetAsync()
{
    using (var db = new DbContext())
    {
        var product = await db.Products.GetAsync(12);
        Assert.AreEqual(12, product.ProductID);

        var customer = await db.Customers.GetAsync("VINET");
        Assert.AreEqual("VINET", customer.CustomerID);
    }
}

  实体类有几个主要属性,Get 方法的参数数组长度要与主要属性的数量一致。

  比如订单明细 OrderDetails 类有 OrderId 和 ProductId 两个主要属性,则在使用 Get 方法时需要传入两个值方可查询出实体对象,且主键值的顺序和实体类中属性的顺序一致。

[TestMethod]
public void TestGetByMultiKeys()
{
    using (var db = new DbContext())
    {
        var detail = db.OrderDetails.Get(10248, 42);
        Assert.AreEqual(10248, detail.OrderID);
        Assert.AreEqual(42, detail.ProductID);
    }
}

[TestMethod]
public async Task TestGetByMultiKeysAsync()
{
    using (var db = new DbContext())
    {
        var detail = await db.OrderDetails.GetAsync(10248, 42);
        Assert.AreEqual(10248, detail.OrderID);
        Assert.AreEqual(42, detail.ProductID);
    }
}

  可以使用 FirstOrDefault / FirstOrDefaultAsync 替代 Get / GetAsync 方法。