0
何回か試してみてください。両方のテーブルから選択した列でNhibernateを結合してください
私は以下のようにQueryOverでNHibernateを使用しています。 値 "Reviews.Models.Product":私は、クエリがエラーがある
Product px = null;
ProductReview rev = null;
var result = CurrentSession
.QueryOver<ProductReview>()
.Where(r => r.IsActive && !r.IsDraft)
.Select(
Projections.Property<ProductReview>(r => r.Id).WithAlias(() => rev.Id),
Projections.Property<ProductReview>(r => r.Title).WithAlias(() => rev.Title)
)
.OrderBy(r => r.ReviewDate).Desc()
.TransformUsing(Transformers.AliasToBean<ProductReview>())
.JoinAlias(r => r.Product,() => px)
.Select(
Projections.Property(() => px.UPC).WithAlias(() => px.UPC),
Projections.Property(() => px.FullName).WithAlias(() => px.FullName)
)
.TransformUsing(Transformers.AliasToBean<Product>())
.Take(5)
.List();
ある
HasMany(x => x.CustomerReviews).KeyColumn("ProductId").Inverse().Cascade.None().LazyLoad();
を製品側の
public class Product
{
....
public virtual IList<ProductReview> CustomerReviews {get;set;}
....
}
public class ProductReview
{
....
public virtual Product Product {get;set;}
....
}
マッピングなどの製品やProductReviewをされてい"Reviews.Models.ProductReview"タイプではありません。この一般的なコレクションでは使用できません。パラメータ名:値
私は本当に別のDTOを作成したくありません。私は最後の5つの新しいレビューのリストを取得し、商品が入力されるようにしたいと思います(両方のエンティティに必要なフィールドをいくつか入力してください)。
これは、NHibernate 3.0の任意の手段(raw SQLを除く)で可能ですか?
私は別のDTOクラスを望んでいないと言いました。しかし、とにかく答えてくれてありがとう。 – Ketan
DTOを削除するための私の答えを更新しました。 –
それは私が今使っているものだが、それは私のために過度のものである各entitiyのすべてのフィールドを引っ張る。 – Ketan