0
Fluent NHibernate를 처음 사용했습니다.C# Fluent NHibernate 쿼리 많은 레코드에서 많은 레코드로 레코드를 쿼리하는 방법
여러 관계에 대해 다음과 같은 매핑이 있습니다.
제품이 제품 테이블에 있지만 ProductLink 테이블에서 사용할 수없는 경우 레코드를 다시 가져 오도록 쿼리 오버를 사용하여 쿼리를 작성하는 방법은 무엇입니까? 어떤 이유로 레거시 시스템이므로 데이터가 적절하지 않습니다. 그래서 제품 테이블이 아닌 레코드를 무시하고 싶지 않습니다.
아무도 도와 줄 수 없습니까?
Product productAlias = null;
Asset assetAlias = null;
var query = Session.QueryOver(() => assetAlias);
//Condn1: must be linked to a Product number
query.Inner.JoinAlias(() => assetAlias.Products,() => productAlias);
var result = query
.Skip(pageIndex * pageSize)
.Take(pageSize)
.Future<Asset>();
자산
public AssetMap()
{
Table("ASSET_INFO");
Id(x => x.Id).GeneratedBy.Assigned().Column("MAT_ID");
Map(x => x.Title);
HasManyToMany(x => x.Products)
.Table("PROD_LINK")
.AsBag()
.ParentKeyColumn("MAT_ID")
.ChildKeyColumn("PROD_NO")
.Cascade.All()
.LazyLoad();
}
제품
public ProductMap()
{
Table("PROD_INFO");
Id(x => x.Id).GeneratedBy.Assigned().Column("PROD_NO");
Map(x => x.Name).Column("PROD_NM");
HasManyToMany(x => x.Assets)
.Table("PROD_LINK")
.ParentKeyColumn("PROD_NO")
.ChildKeyColumn("MAT_ID")
.Inverse()
.LazyLoad();
}
PRODUCTLINK
public class ProductLinkMatMap : ClassMap<ProductLinkMat>
{
public ProductLinkMatMap()
{
Table("PROD_LINK");
CompositeId().KeyReference(x => x.Asset, "MAT_ID")
.KeyReference(x => x.Product, "PROD_NO");
}
}