Temmuz ayı blog kayıtları
LINQ Many To Many İlişkiler

Kullanırken tanık olmuşsunuzdur, LINQ içerisinde Many To Many ilişkili olan örneğin :

Products

Orders

[Order Details]

gibi üç tabloyu dbml tarafına çektiğinizde, kullanım açısından bir Siparişin bütün ürünlerine ulaşmak için Order_Details koleksiyonunu kullanmak zorunda kalırsınız. Örnek :

var siparis = nv.Orders.Where(o => o.OrderID == 10248).First();

yukarıdaki kod içerisinde Siparişler içerisinden 5 numaralı olan siparişe konumlanıyoruz. Fakat sipariş üzerinden tek seferde Products kayıtlarına ulaşamıyoruz.

siparis.Products gibi bir kod yazma şansımız yok çünkü arada [Order Details] tablosu bulunmakta.

Bunu aşabilmek için Orders ve Products class'ına ufak bir property tanımlamanız yeterli :

public IEnumerable<Order> Orders{

get

{

return Order_Details.Select(od => od.Order);

}

}

yukarıdaki property'yi Product class'ına aşağıdaki property'yi ise Order class'ına ekliyoruz.

public IEnumerable<Product> Products

{

get

{

return Order_Details.Select(od => od.Product);

}

}

Bu işlemin sonucunda artık kod içerisinde aşağıdaki kodu yazarak Many To Many ilişkili class'ları olması gerektiği gibi kullanabiliyorsunuz :

var siparis = nv.Orders.Where(o => o.OrderID == 10248).First();dgProduct.DataSource = siparis.Products.ToList();

veya

var urun = nv.Products.Where(o => o.ProductID == 5).First();dcOrder.DataSource = urun.Orders.ToList();


WebBrowser kontrolü içerisinde office dökümanlarını açmak

Kendi geliştirdiğiniz windows forms uygulamaları içerisinde, webbrowser kontrolü aracılığı ile bir office dökümanı açmak isterseniz aşağıdaki gibi bir kod işinize yarayacaktır :

webBrowser1.Navigate("Dökümanın path bilgisi");

Fakat bu kod sonucunda eğer döküman bir word dosyası ise Microsoft Word'ün eğer başka bir office uygulamasına ait ise o uygulamanın açıldığını ve sizin webbrowser kontrolünüzün boş kaldığını görürsünüz. Özetle dökümanın tamamen sizin kontrolünüzün içerisinde açılması için aşağıdaki Registry ayarlarını yapmanız gerekmektedir. Fakat bu dosya içerisindeki atamaların çok dikkatli yapılması gerektiğinden ilk önce bir full Registry backup almanızı öneriyorum. Problem çıkarsa hemen geri dönmeniz için :)

Registry ayarları :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8]
"BrowserFlags"=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.RTF.8]
"BrowserFlags"=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.12]
"BrowserFlags"=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.DocumentMacroEnabled.12]
"BrowserFlags"=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.8]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.12]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.SheetMacroEnabled.12]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.SheetBinaryMacroEnabled.12]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PowerPoint.Show.8]
"BrowserFlags"=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PowerPoint.Show.12]
"BrowserFlags"=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PowerPoint.ShowMacroEnabled.12]
"BrowserFlags"=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PowerPoint.SlideShow.8]
"BrowserFlags"=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PowerPoint.SlideShow.12]
"BrowserFlags"=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PowerPoint.SlideShowMacroEnabled.12]
"BrowserFlags"=dword:800000A0

Not: Bu kodları kopyalayıp bir txt belgeye yapıştırın. Dosyayı reg uzantısı ile kayıt edin ve sonrada dökümanı çalıştırın. İşlem tamam :)


İnternet Explorer içerisindeki URL listesi

İnternet explorer içerisinde yazmış olduğunuz URL bilgilerini otomatik tamamlayan listeye ulaşmak için Registry içerisinden aşağıdaki yolu kullanabilirsiniz :


HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs :)