我正在使用通用存储库和 petapoco 微型 ORM。我将它用于 Northwind 数据库作为示例项目。由于 petapoco 不处理任何连接,因此我在 Customer 类中创建了一个列表属性。以下是我的存储库类的一部分
public T GetById(string id)
{
return this.db.SingleOrDefault<T>("WHERE CustomerId = @0", id);
}
public Customer GetOrdersAndCustomersByCustomerId(string id)
{
var customer = this.db.SingleOrDefault<Customer>("WHERE CustomerId = @0", id);
var orders = this.db.Query<Order>("WHERE CustomerId = @0", id).ToList();
if (customer != null && orders != null)
{
customer.Orders = new List<Order>();
customer.Orders.AddRange(orders);
}
return customer;
}
虽然 GetById 使用通用变量 T,但我无法在 GetOrdersAndCustomersByCustomerId 中使用它。相反,我必须使用特定的 Customer 类。否则我无法使用这一行:customer.Orders.AddRange(orders); 正如它所抱怨的那样,“T”没有“订单”的定义。反正有没有使这种方法通用?