单一查询
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 方法。