Merhaba,
Siz hiç internette fluent nhibernate orm kullanıldığında tabloların nasıl join lenip partial view ünüze uygun olarak hazırladığınız model class ınıza aktarılacağını araştırdınız mı ?
Öyleyse hemen nasıl olacağından bahsedelim. Fluent Orm ile hazırlanan uygulamalarda tabloların birleştirilmesi gerektiğinde ;
var _MatList = session.Query<IASBOMITEM>()
.Join( session.Query<IASBOMITEMX>(),
iasbom => iasbom.ID,
iasbomx => iasbomx.ID,
(iasbom, iasbomx) => new
{ iasbomitem = iasbom, iasbomitemx = iasbomx }
)
.Where(x => x.iasbomitem.COMPANY == x.iasbomitemx.COMPANY && x.iasbomitem.ALTERNUM == “00”
&& x.iasbomitemx.LANGU == “T”
&& x.iasbomitem.VALIDFROM <= DateTime.Now && x.iasbomitem.VALIDUNTIL >= DateTime.Now
&& x.iasbomitem.COMPANY == “01” && x.iasbomitem.MATERIAL == x.iasbomitemx.MATERIAL
&& x.iasbomitem.MATERIAL == “990101001”
&& x.iasbomitemx.BOMITEM == x.iasbomitem.BOMITEM
).Select(x => new SelectChoicePlant
{
_code = x.iasbomitem.COMPONENT,
_desc = x.iasbomitemx.STEXT,
_standartQuan = x.iasbomitem.QUANTITY,
_quantity = x.iasbomitem.QUANTITY
}
).ToList();
session => Sizin connection ınızı sağladığınız context e ait nesne dir. Örnek olarak daha önceki yazımda hazırladığım bu görsele ve de bu görsele bakabilirsiniz.
Turuncu ile gösterdiğimiz alanda sınıflardan yeni bir nesne oluşturacağımızı belirtiyoruz. Where cümleciği ile de bu 2 tablo arasındaki filtrelemeyi yapıyoruz. Select cümleciği içerisinde SelectChoicePlant dediğimiz model sınıfımızı new leyerek içerisinde belirlediğimiz property lerin karşılarına hangi verilerin gelmesi gerektiğini yazıyoruz.
PartialView de @model Icollection… diyerek çağırdığımız satırda tek bir sınıf yazabiliyoruz. Controller dan dönecek olan veri listesi tipini de doğal olarak partialview ile aynı yazmamız gerekiyor.Yazmazsak “Internal Server Error [500]” uyarısı alabiliriz. Bu tip join işlemlerinde veriyi Select ile tek bir model e alıp,bunu partial a gönderirsek sorun yaşamayız.
Faydalı olması dileğiyle…