petapoco micro 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」には「注文」の定義がありません。このメソッドをジェネリックにする方法はありますか?