Je suis nouveau à Fluent NHibernate.C# Fluent NHibernate queryover comment interroger des enregistrements à partir de la table de liaison dans plusieurs à plusieurs relation
J'ai les mappages suivants pour de nombreuses relations. Comment écrire une requête en utilisant queryover afin de ramener des enregistrements si le produit n'existe pas dans la table des produits mais est disponible dans la table ProductLink? Pour une raison quelconque, les données ne sont pas correctes car il s'agit d'un système existant. Donc, ne veut pas ignorer les enregistrements qui ne sont pas la table des produits.
Quelqu'un peut-il m'aider s'il vous plaît comment y parvenir?
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>();
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();
}
Produit
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");
}
}