0
Fluent NHibernateを新しくしました。C#流暢なNHibernateの照会多くの関係からリンクテーブルのレコードを照会する方法
私は多対多の関係のために以下のマッピングを持っています。
製品が製品表に存在しないがProductLink表で使用可能な場合にレコードを戻すために、queryoverを使用して問合せを作成する方法はありますか?何らかの理由で、レガシーシステムであるためデータが適切ではありません。だから、製品テーブルではないレコードを無視したくない。
誰でもこの達成方法を教えてください。
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");
}
}