Fluent Nhibernate / Tablo Join İşlemi (Lambda)

fluent-nhibernate

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…

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s