yeterince sql bilmediğini düşünen ya da sql yazmak istemeyen yazılımcılar için ideal görünen orm.
avantajları olduğu kadar dezavantajları da olan, bizzat kullandıktan sonra birdaha kullanmayı düşünmediğim orm.
yazdığınız linq kodunu kendisi arkada sql'e çevirmektedir. ancak bazen sorunlu çeviri yapabilir.
database modeli update ederken sıkça sorunlar çıkarmaktadır. bir tabloda ya da prosedürde değişiklik yaptınız diyelim, modeli refresh dediğinizde çoğu zaman problemli refresh eder. gidip ilgili tabloyu ya da prosedürü model browser'dan silip tekrar almanız gerek ki bu sefer de relation'lardan dolayı bi an durumu çözemeyip hata verebiliyor. bir kaç kere tüm modeli silip tekrar oluşturduğumu biliyorum.
onu geçtim, composit key içeren tabloları oluşturmuyor. composit key haricinde kolon yoksa tabi.
örneğin Urun tablosu, dokuman tablosu ve ürünle dokümanı ilişkilendiren urundokuman tablosu var. bu ilişki tablosu urunid kolonuyla urun tablosuna, dokumanid kolonuyla dokuman tablosuna bağlı. başka bi kolonu da bulunmuyor. gittik linq ile ürüne doküman eklemek veya silmek istiyoruz diyelim. işte o an, ao tablo yok. çünkü o tablo bir ilişkiden ibaret ve sadece bir ok olarak generate ediliyor. 'e nasıl ekleyeceğim?' diyorsanız, önce ürünü nesneleyip, sonra o nesne üzerinden dokümanlarına erişebilirsiniz. ama buraya dikkat, bunun için context.configuration.proxycreationenabled özelliği true olmalı. default'u zaten true'dur ama false olması gereken yerler de var.
bunu da geçelim, linq yazıyoruz. yazdığımız sorgudan oluşturduğumuz bir modelin nesnesini döndüreceğiz. tarihi string olarak döndürmek istiyorum diyelim. gayet yazıyorum date.Tostring() şeklinde ve compile zamanında bir hata da vermiyor. gel gör ki runtime'da çatlıyor efenim. çünkü niye, çünkü bu tarz şeyleri asenumerable methodunu kullanarak yapabilirsin sadece ve yazdığın sorgu da uzadıkça uzar. bunun order by'ı var, group by'ı var, case when, sum'ı var. ve emin ol bunları sql sorgun ile daha kolay yapabiliyorsun.
kullanma demiyorum, sen de kullan, sen de yaşa bu deneyimleri. aslında linq kullanmak zevkli olabiliyor bazen. hani kesin olmaz da demiyorum, olur, ama çok geç oluyor be abi. küçük küçük sorunlarla uğraşmaktan deadline geçip gidiyor. başında proje lideri var, yönetici var, müşteri var. canından beziyorsun sonra.