2012-05-03 9 views
2

私はユーザとオーダーのリストを持っています。複数のIRepositoryの結果を取得する

public class UserRecord 
{ 
    public virtual int UserId { get; set; } 
    public virtual string Name { get; set; } 
} 

public class OrderRecord 
{ 
    public virtual int UserId { get; set; } 
    public virtual int OrderId { get; set; } 
} 

私はIRepositoryとIRepositoryという2つのリポジトリを持っています。どうすれば2つに参加して結果を取得できますか?

SELECT UserRecord.UserId、名前、UserRecord FROM OrderIdで 、OrderRecord UserRecord.UserId = OrderRecord.UserId

感謝。

答えて

2

代わりにContentManager上にあるHQL APIを使用してください。リポジトリは、単一のテーブルに対する単純なCRUD操作用です。

+1

ContentManagerを使用するには、ユーザーレコードと注文レコードの両方がコンテンツパーツでなければなりませんか? 2つのテーブル/コンテンツ部分を結合するためのHQLサンプルクエリはありますか? – user471317

+0

HQLは、原則として、通常のnHibernateで実行できるクエリを有効にする必要があります。 ProjectorとHqlExpressionTest.csには例があります。 また、nHibernateセッションを直接取得し、そこから任意のHqlまたはSQLクエリを実行することもできます。 OrchardPoモジュールにその例があります。 –

+0

私はISessionを使用しようとすると例外が発生します。 Autofac.Core.DependencyResolutionException:ポリシー 'Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper'の型で見つからなかったコンストラクタはありません。 MyController 'は利用可能なサービスとパラメータで呼び出すことができます: コンストラクタ' Void .ctor(Orchard.Data.IRepository'1 [UserRecord]、Orchard.Data.IRepository'1 [OrderRecord]、NHibernate.ISession) 'のパラメータ解決に失敗しましたパラメータ 'NHibernate.ISession session'。 – user471317