MVC3 を使用してインターネット ショップを構築しようとしています。私は EF を使用しており、エンティティ コンテキストを操作するためのインターフェイスが 1 つあります。
public interface IBaseRepository<T> where T : class, IBase, new()
{
IQueryable<T> Get();
}
そして、このインターフェースで動作する 1 つの抽象クラス:
public abstract class BaseRepository<T> :
IBaseRepository<T> where T : class, IBase, new()
{
protected abstract ObjectSet<T> EntitySet { get; }
public virtual IQueryable<T> Get()
{
return from obj in EntitySet select obj;
}
}
したがって、このソリューションを使用して、データベース (SQL) 内のさまざまなテーブルを操作できます。画像はまだ投稿できません。だから私は私のデータベースを説明しようとします:
[製品] - [CategoryProduct(ProductID,CategoryID)] - [Category(ShortName)]
- テーブル製品
- フィールド ShortName を持つテーブル カテゴリ
- 多対多リンクを作成するフィールド ProductID、CategoryID を持つテーブル CategoryProduct。
(私たちは問題に近づいています....)
テーブル「Category」から「ShortName」を取得するメソッドがあります(「リポジトリ」は、1 つのテーブルの dbcontext のみです - 「Category」)。
public ActionResult GetProductInCategory(string shortName)
{
IEnumerable<Product> = repository.Get()......
return View();
}
ここに問題があります:ラムダを使用してこれらの3つのテーブルから製品を取得するクエリを作成する必要がありますが、これを行う方法がわかりません。
データベース全体で 1 つのテーブルにしか直接アクセスできないため、linq を使用できません。
説明が下手で申し訳ありませんが、全体像を把握するためのアーキテクチャについて質問がある場合は、お答えします。