Merhaba arkadaşlar bu yazımda karşılaştığım ve bana gereksiz yere zaman harcatan bir hatadan bahsedicem. Aslında tam olarak da hata diyemiceğim bir durum bu ... EF ile çalışırken bazen (her eklediğimde karşılaşmadım.) store proc ekleme işlemii yaptığımda intellisense da SP mi göremiyor ve onu kullanmıyorum.Bunun çeşitli nedenleri olabilir ama benim sorunumda Model Browser'dan baktığımda SP nin Comlex Type ı eklenmiş ve Function Import Bölümünde Fuctionunun eklenmiş olduğu halde SP mi kullanamıyordum.Bunu aşmak için ve çalışmaya devam etmek için Solition Explorerdan Modelinize gelin ve Model.Context.tt ve Model.tt üzerine ayrı ayrı sağ tıklayarak run costom tool seçeneğini seçin.Bunu yaptıktan sonra spnizi sorunsuz olarak kullanmaya devam edebilirsiniz.
Not: Benim Örneğimde Nortwind kullanıdığı için oradaki isimler NorthwindModel.Contenxt.tt ve NorthwindModel.tt dir.
Yardımcı olduysa iyi :)
17 Temmuz 2013 Çarşamba
20 Mayıs 2013 Pazartesi
C# Duplicate initialization of member Hatası
Merhaba arkadaşlar. Çalışmanızda bu hatayı bir objenizn propertysine değer ataması işlemi yapıyorsanız görebilirsiniz bunun nedeni zaten objenin o properysine değer atamış olmanızdır.Örnek olarak ;
var kisi = new kisiObje
{
ID = 1,
Yas = 18,
Ad = "Ali",
Soyad = "Cankan",
Yas = 21
};
Bu atama işeleminde 2. Yas ataması bölümünde hata olduğunu visual studio bize bildiricek yapmamız gereken atamalarımı kontrol etmek.
var kisi = new kisiObje
{
ID = 1,
Yas = 18,
Ad = "Ali",
Soyad = "Cankan",
Yas = 21
};
Bu atama işeleminde 2. Yas ataması bölümünde hata olduğunu visual studio bize bildiricek yapmamız gereken atamalarımı kontrol etmek.
14 Mayıs 2013 Salı
Asp.net Garip Url
Merhaba arkadaşlar çalıştığınız bir asp.net sayfası üzerinde webconfig ayarlarında session ayarları yaptığınız zaman karşınıza bu tarz bir url çıkabilir.
http://localhost:35735/(S(gj33dkv0arq3snrxavpze3vs))/sayfam
http://localhost:35735/(S(gj33dkv0arq3snrxavpze3vs))/sayfam
Örnek vericek olursam;
<sessionState
mode="InProc"
cookieless="true"
timeout="30"/>
Bu url tipinden kurtulmak ve eski haline çevirmek için. Buradaki cookieless="true" kısmını kaldırmak yeterli olucaktır
Etiketler:
asp.net bu url ne,
asp.net crazy url,
asp.net garip url,
cookieless,
InProc,
mode,
problem in URL,
recep gür,
session identifiers,
sessionState,
timeout,
webconfig
22 Mayıs 2012 Salı
HTML nedir ?
Merhaba arkadaşlar bu makalemde sizlere Html ve XHtml arasındaki farkları anlatmayı düşünüyorum.Farklara değinmeden önce html nasıl çıkmış hikayesi neymiş nasıl bir dilmiş ondan sizlere bahsedicem.
Html dediğimiz teklonoji 80 lilerin sonlarında isviçrede tim barner lee denen bi fizikçi tarafıdan yapılmıştır.Html açılımı Hyper Text Markup Language'dir ve bu bir işaretleme dilidir.Xml ile bu bağlamda benzerlik gösterir.ancak Xml i daha çok farklı platformlar arası veri alışveriş için kullanıyoruz.Html daha çok bu fizikçi abilerimizin düzenli olarak makalelerini yayınlayabilmeri ihtiyacından yola çıkılarak yaratılmıştır.Amaç makalelerini yazıp sunucuya atmak ve farklı laboratuvarlardaki yada farklı lokasyonlardaki bilim insanlarının bu makaleleri okuyarak bilgi sahibi olabilmeleri.Gün geçtikçe bu işlemler dahada günlük hayatımıza girmiştir ve bireysel web sayfaları ortaya çıkmıtır.Kullanımı arttıkça farklı standartlarda ortaya çıkmaya başlamıştır. 1994 yılında W3c adı ile bir standart ortaya çıkmıştır.IBM - Apple - Sun gibi büyük firmalar bu işaretleme dilini standart bir hala getirmişlerdir.Bu büyük adımdan sonra ise web dünyası büyük bir gelişim ve değişim geçirmeye başlamıştır.Web sitelerinin geleceğine bakıcaksak eğer öncelikle geçmişe bir göz atmamız gerekli.eğer versiyon olarak tanımlamak gerekirse ki bu versiyon dediğim daha çok dönemler versiyonlardır web 1.0 90 lı yılların sonuna kadar dönemi kapsamaktadır.Bu dönemde web siteleri web sayfalarından oluşuyor ve üreten ve tüketen diye tabir edebileceğimiz Üretici ve Tüketiciler var.Tüketici kullanıcı.Üretici ise web sayfalarına metinler ve resimler ekleyen kişilerdir.O dönemde 1000 kişi web sayfası üretiyorsa 10000 kişide tüketici durumunda web sayfasına girer bilgi edinir işini gördükten sonra sayfadan çıkar.Üreten'e göre tüketen sayısı o dönemlerde çok fazlaydı.Web 1.0 döneminde aynı bugünkü gazete ve dergiler gibiydi web sayfaları sınırlı üretici ve çok sayıda tüketici.Aslına bakarsak bu büyük bir problem arkadaşlar bunun içinse Web 2.0 dönemine geçildi.Bu dönemde de amaç tüketicileri üretici kısmına kaydırmaktı.Arz talep bir şekilde karşılanması gerekiyordu.Bu dönemde görsellik çok ön plandaydı ve web siteleri oldukça albeni kazanmıştı.Güzel bir örnek vermek gerekirse bu tarz sitelere Youtube diyebilirim.Burda bildiğiniz gibi her tüketici bir video yükleyerek üretici pozisyonuna geçebiliyor.Yani sitedeki içeriği siteyi kullanan kişiler meydana getiriyor.Bu dönemde web programcılığı ortaya çıktı.Cgi -Php -Asp-Jsp gibi diller kullanılarak html ile bütünleşik bir yapıda kullanıcılardan Resim , Metin ve Video gibi daha birçok veri alındı ve işlendi.Bu sayede sayfalara başka kullanıcılarında katılımı sağlandı.Burdan sonrasıda arkadaşlar hepimizin bildiği Facebook , Twitter gibi hayatımızın içinde yerini alan ve sürekli olarak kullandığımız web siteleri.Turistik hikayemizden sonra arkadaşlar gelelim html'e.
Html dediğimiz teklonoji 80 lilerin sonlarında isviçrede tim barner lee denen bi fizikçi tarafıdan yapılmıştır.Html açılımı Hyper Text Markup Language'dir ve bu bir işaretleme dilidir.Xml ile bu bağlamda benzerlik gösterir.ancak Xml i daha çok farklı platformlar arası veri alışveriş için kullanıyoruz.Html daha çok bu fizikçi abilerimizin düzenli olarak makalelerini yayınlayabilmeri ihtiyacından yola çıkılarak yaratılmıştır.Amaç makalelerini yazıp sunucuya atmak ve farklı laboratuvarlardaki yada farklı lokasyonlardaki bilim insanlarının bu makaleleri okuyarak bilgi sahibi olabilmeleri.Gün geçtikçe bu işlemler dahada günlük hayatımıza girmiştir ve bireysel web sayfaları ortaya çıkmıtır.Kullanımı arttıkça farklı standartlarda ortaya çıkmaya başlamıştır. 1994 yılında W3c adı ile bir standart ortaya çıkmıştır.IBM - Apple - Sun gibi büyük firmalar bu işaretleme dilini standart bir hala getirmişlerdir.Bu büyük adımdan sonra ise web dünyası büyük bir gelişim ve değişim geçirmeye başlamıştır.Web sitelerinin geleceğine bakıcaksak eğer öncelikle geçmişe bir göz atmamız gerekli.eğer versiyon olarak tanımlamak gerekirse ki bu versiyon dediğim daha çok dönemler versiyonlardır web 1.0 90 lı yılların sonuna kadar dönemi kapsamaktadır.Bu dönemde web siteleri web sayfalarından oluşuyor ve üreten ve tüketen diye tabir edebileceğimiz Üretici ve Tüketiciler var.Tüketici kullanıcı.Üretici ise web sayfalarına metinler ve resimler ekleyen kişilerdir.O dönemde 1000 kişi web sayfası üretiyorsa 10000 kişide tüketici durumunda web sayfasına girer bilgi edinir işini gördükten sonra sayfadan çıkar.Üreten'e göre tüketen sayısı o dönemlerde çok fazlaydı.Web 1.0 döneminde aynı bugünkü gazete ve dergiler gibiydi web sayfaları sınırlı üretici ve çok sayıda tüketici.Aslına bakarsak bu büyük bir problem arkadaşlar bunun içinse Web 2.0 dönemine geçildi.Bu dönemde de amaç tüketicileri üretici kısmına kaydırmaktı.Arz talep bir şekilde karşılanması gerekiyordu.Bu dönemde görsellik çok ön plandaydı ve web siteleri oldukça albeni kazanmıştı.Güzel bir örnek vermek gerekirse bu tarz sitelere Youtube diyebilirim.Burda bildiğiniz gibi her tüketici bir video yükleyerek üretici pozisyonuna geçebiliyor.Yani sitedeki içeriği siteyi kullanan kişiler meydana getiriyor.Bu dönemde web programcılığı ortaya çıktı.Cgi -Php -Asp-Jsp gibi diller kullanılarak html ile bütünleşik bir yapıda kullanıcılardan Resim , Metin ve Video gibi daha birçok veri alındı ve işlendi.Bu sayede sayfalara başka kullanıcılarında katılımı sağlandı.Burdan sonrasıda arkadaşlar hepimizin bildiği Facebook , Twitter gibi hayatımızın içinde yerini alan ve sürekli olarak kullandığımız web siteleri.Turistik hikayemizden sonra arkadaşlar gelelim html'e.
<html> <!—Her html sayfa
<html> ile başlar </html> ile biter burası kök dizindir.Bu Html kök
dizinimizin 2 tane alt elemanı olabilir.-->
<head>
<!--
//sayfanın görsel olmayan ama ilgili bazı bilgileri barındıran kısımdır.
Daha sonra değiniceğim css javascript kodları bu bölüm içine yazılır.Tabi
bunlarla kısıtlı değildir.Arama motorları için direktifler.Arama motoru
indexlesinmi indexlemesinmi ? hangi süre aralıklarında indexlensin gibi
görünmeyen ayarlarımızı bu bölümde yaparız.
</head>
<body>
<!--Bir html dökümanın sayfa
içerisindeki göstericeği resim metin her ne gösterilicekse bu bölümde istenildiği
gibi biçimlendirilerek gösterilir.
Selam Dünya
</body>
</html>
Html dünyasına böyle bir giriş yaptıktan sonra ilerlemeye devam edicez arkadaşlar
Etiketler:
arama motoru optimizasyonu,
asp,
cgi,
facebook,
html,
html nedir,
jsp,
php,
recep gür,
tim barner lee,
tüketici,
twitter,
üretici,
versiyon,
w3c,
web 1.0,
web 2.0,
xhtml,
xhtml ile html arasındaki farklar,
xml
12 Mayıs 2012 Cumartesi
MSSQL Fonksyonlar -- TSQL --
Selam arkadaşlar bu yazımda sizlere fonksyonlar hakkında bilgi vericem.C#'dan da hatırladığımız gibi işlerimizi çok kısaltan hızlandıran hazır fonksyonlarımız vardı.Bunlar MSSQL'de de var ve bunları sorgularımızda kullanmaktayız.Aşağıdaki resimde Fonksyonları nerde bulabileceğinizi görüceksiniz.Ben hepsine değinmiycem sadece Mathematical (Math) , Date and Time ve String Fonksyonlar üzerinde durucam.
Bu fonksyonlar üzerinde örnekler yapıcam ve select cümlelerim içinde nasıl işimize yararlar ve işlerimizi kolaylaştırırlar bunlar üzerinde durucam.
MSSQL Select Sorgusu -- TSQL --
Merhaba arkadaşlar makalemde select sorgusu üzerinde durucam. Select sorgusu üzerine örnekler ve açıklamalarla devam edicem. TSQLNedir? makalemde Veri tabanı - Tablo kavramlarından bahsetmiştik.Artık işlerimiz hep bu veri tabanı ve tablolar üzerinden devam edicek.Veri Tabanı verilerimizi düzenli bir biçimde saklamamıza yarardı ama bu veriler sadece saklanırlarsa bir işe yaramazlar.Verileri çekip bunları isteğe göre listeleyip bunlar üzerinden raporlar olsun istitastikler olsun hepsini alabiliriz.Bunları yapabilmek içinde Select sorgusunu iyice öğrenmemiz gerekli arkadaşlar.Uzatmadan Örnekler üzerinde devam edicem.
Yukarıda 3 örneğim Like komutu ile ilgili arkadaşlar.Yanlarındada açıklamları var.Yaptığı iş şöyle CompanyName Kolonundaki verilerden belirtilen şartlara uygun olanlarını getiriyor.Şöyleki ilk örnekte baş harfi T olucak devamını dikkate almıyor.Burdaki % işareti sonda olan bir örnek yapmadım eğer like '%T' yapsaydım sonu T ile bitenleri getiricekti.
SELECT * FROM Customers
Temel yazım şeklli şöyledir arkadaşlar SELECT KOLON_ADI FROM TABLO_ADI .Örneğimde Customers diye bir tablom var ve içindeki tüm kolonlardaki verileri bana getir diyorum. Burda *(Yıldız) ifadesi tüm kolonlar anlamına gelir.
select
CompanyName,ContactName,ContactTitle from Customers
Burdada 3 tane kolon adı belirtmişim ve Customers Tablosundan bu 3 kolondaki tüm verileri listelemişim.
Daha açıklayıcı olması için ekran görüntüsü ekledim arkadaşlar. Customers tablom aslında 11 kolondan meydana geliyor ama ben sadece 3 kolon belirttim ve onlardaki verileri çektim.
select
CompanyName as Firma ,ContactName
as Kişi,ContactTitle
Ünvan
from Customers
Bu örneğimde ise bir öncekinden çok az bir fark var Üstteki resimde gördüğünüz CompanyName yazan kolon adı yerine Firma yazıcak.Yani görünen kolon adını değiştiricek.Kolon adı arada boşluk bırakılarak yazılamaz arkadaşlar. Birkaç farklı yöntemi daha var bunlarda yazabilirsiniz.Başka örneklerde göstericem.
select FirstName+' '+LastName [Ad Soyad] from
Employees
Emloyees tablomda ad ve soyad kolonları var ve ben bunların tek bir kolonda gösterilmesini istiyorum.Burda kolon adı için farklı bir örnek daha var arkadaşlar köşeli parantezler içine boşluk kullanarak Ad Soyad yazılmış eğer boşluk bırakılarak kullanılıcaksa bu yöntem tercih edilmelidir.
select CompanyName,ContactName,ContactTitle,Country
from Customers where Country = 'Germany'
Örnekte ülkesi Germany olanları listelemişiz.Burda dikkat edilmesi gereken bir değişik var.Where koşulundan sonra Country kolonunun içindeki değer eğer Germany ifadesine eşitse listele diyor.Bu C#'daki karar yapılarına benzerlik gösteriyor arkadaşlar.
select CompanyName,ContactName,ContactTitle,Country
from Customers where Country = 'Germany' or Country = 'USA' or Country = 'UK'
select CompanyName,ContactName,ContactTitle,Country
from Customers where Country in ( 'Germany','USA','UK');
Yukarıda iki tane sorgum var ve ikiside aynı işlemi yapıyorlar.İlk sorgu ikincisine nazaran daha uzun.Bu sorgular ülkesi Germany yada USA yada UK olanları listeler.
select Distinct Country from Customers
Yine sorguda bir farklılık var arkadaşlar distinct ifadesi eşssiz tekrarsız anlamındadır.Country kolonunda tekrar eden ülkeler var diyelimki.Bunları tekrarsız getirir yani 10 tane Germany olduğunu varsayarsak sadece 1 tane getirir benzersiz tekrarsız durumdakiler gelir.
select
ProductName,UnitPrice
from Products where UnitPrice between
30 and 50
Between arasında anlamındadır.Örnekten yola çıkarsak unitprice(fiyatı) 30 ile 50 arasında olanları listeliyor.
select
CompanyName
from Customers where CompanyName like
'T%' -- T ile başlayan.
select
CompanyName
from Customers where CompanyName like
'T%S' -- T ile başlayan
S ile bten.
select
CompanyName
from Customers where CompanyName like
'%T%' -- Bi yerlerinde
T olsun.
Yukarıda 3 örneğim Like komutu ile ilgili arkadaşlar.Yanlarındada açıklamları var.Yaptığı iş şöyle CompanyName Kolonundaki verilerden belirtilen şartlara uygun olanlarını getiriyor.Şöyleki ilk örnekte baş harfi T olucak devamını dikkate almıyor.Burdaki % işareti sonda olan bir örnek yapmadım eğer like '%T' yapsaydım sonu T ile bitenleri getiricekti.
Select
ProductName From Products Order By UnitsOnOrder
Asc
Sıralama işlemi yapmamı sağlar.Yazımı Order By KOLON_ADI Asc şeklindedir.Asc alfabetik sıralama içindir yazmak zorunda değilsiniz sadece order by kullansanızda sıralar. Desc'de tam tersi şekilde sıralama işlemi yapar arkadaşlar.
Tüm örneklerimi Microsoft'un verdiği Northwind Db üzerinde yaptım ve bu Db üzerinden devam edicem arkadaşlar.Download etmek isterseniz NorthwindDB 'den indirebilirsiniz. Okuduğunuz için teşekkürler.
Tüm örneklerimi Microsoft'un verdiği Northwind Db üzerinde yaptım ve bu Db üzerinden devam edicem arkadaşlar.Download etmek isterseniz NorthwindDB 'den indirebilirsiniz. Okuduğunuz için teşekkürler.
8 Mayıs 2012 Salı
C#'da Connection Pooling
Merhaba sayın arkadaşlar bu makalemde kodlarımıza biraz takla attırıcaz.Connection Pooling meselesi üzerinde durucaz.Şimdi Pool havuz demek arkadaşlar.Elimizde bir havuzumuz var . Connection kelimesini açmaya gerekte pek görmüyorum .Bir bağlantı havuzumuz var ve bağlantılarımızı aslında farketmeden bunun üzerinden kuruyoruz bunları biliyormuydunuz?Bilmiyorsanızda artık kafanızda biraz kıvılcım oluşmuştur arkadaşlar.Bir hikaye geldi aklıma hepimizin bildiği yada bilmediği bisiklet kullanmak.Ben biliyorum öğrenene kadar uğraşmıştım baya ama sonunda iyi denebilcek seviyede kullanabiliyorum.Bir kere öğrendikten sonra tekrar öğrenme gibi bir çabaya girmedim doğrusu elimde değil.Aynı şekilde yüzmede 1 kere öğrenebilir.Sonra sıkıntı çekmeden her sene yüzer geçersiniz.Connection Pooling de buna benzer bir tavır sergiler arkadaşlarım.Hani beynimiz nasıl yüzme becerisini edindiğinde bunu unutmuyor.Belleğimizde bunu unutmuyor.Bu sefer diyelim bir bağlantımız var elimizde onu açıp kapattığımızda hız artışı sağlıyor.Bir örnek üzerinde deneyelim arkadaşlar.
listBox1.Items.Clear();
SqlConnection con = new SqlConnection("Server=.\\BLACK;Database=Northwind;Trusted_Connection=true;Pooling=False");
DateTime dtBaslangic = DateTime.Now;
for (int i = 0; i
< 1000; i++)
{
con.Open();
con.Close();
}
listBox1.Items.Add((DateTime.Now -
dtBaslangic).TotalMilliseconds.ToString());
Örnekte 1000 tane bağlantımı açıp kapattım.5 saniyemi aldı beklemesi biraz sıkıcı oldu.Belkide başınıza hiç gelmemiştir bunun nedeni Default olarak Pooling True gelmesindendir.Başka Defaultlarıda vardır.Bunları birkaç örnek sonra sizlere göstericem.
Örnekte Başlangıcı DateTime.Now diyerek alıyorum ve bitişinde de tekrar anı yakalayıp başlangıç saatimi ondan çıkarıyorum sonucunda detaylı görülebilmesi için milisaniye cinsinden listboxıma aktarıyorum.Burda Pooling Değerimi True yaptığımda ise inanılmaz bir fark oluyor arkadaşlar.Resimlerle göstereyim.
Resimleri pek güzel kesip parçalayamadım ama üstteki False olan milisaniye cinsinden büyük bi zaman farklı olmuş arkadaşlar.Alttakinde ise zaman çok az geçmiş çok hızlı bir şekilde bağlantı işlemlerini gerçekleştiriyor.
Bir başka bilinçli olarak kullanmadığımız özelliğine daha değinicem arkadaşlar aslında gizliden gizliye bizi bu max pool size diye kısıtlıyor.Default olarka Maximum Açık Bağlantı Sayımız 100 dür arkadaşlar.Kapatmadığımızda bağlantılarımızı ve açmaya devam ettiğimizde maximum sayıya ulaştığımız ve geçmeye çalıştığımız taktirde hata alırız.Sevdiğim bir söz var bir makalede okuduğum.Database bağlantılarında durumumuz şöyle olmalı "mümkün olduğunca geç bağlan,erken çık".
Bir tane deneme yapalım bağlantıları kapatmayıp patlayalım arkadaşlar.
for (int i = 0; i
< 1000; i++)
{
SqlConnection con = new SqlConnection("Server=.\\BLACK;Database=Northwind;Trusted_Connection=true;Pooling=True;max
pool size=50;");
con.Open();
}
Patladığımın resmini görüyorsunuz arkadaşlar. Visual Studio burda bana kızıyor.Bağlantı açmışım kapatmamışım maximum 50 tane bağlantı kurucam demişim.ama ben 1000 tane kurmaya çalımışım.Burası çok önemli arkadaşlar çünkü açtığımız her bağlantıyı kapatmamız gerekli.Her açık bağlantı sistem kaynağından tüketir.O zaman şu soru geliyor benim aklıma max pool size ı arttıralım geçelim.Arttıralımda her güzel şeyin birde kötü tarafı vardır arkadaşlar . Burda Connection Pooling işlemi kullanıyoruz ve bu bizim belleğimizden yiyor.Projemizin yapısına göre ihtiyaca göre Pooling sayısını ayarlamalıyız.Ayarlamadık diyelim en ve en önemlisi açtığımız tüm bağlantıları işleri bittiği zaman kapatmalıyız.
Open() ve Close() olaylarını biliyoruz üstünde durmuycam arkadaşlar.Birde Dispose() olayı var tam olarak kurtulmak istiyorsak tam olarak derkende Close()'dan birkaç adım öteye gider .Bağlantının durum bilgisini ve bağlantının bazı özelliklerinide temizler.Şimdilik bilgim dahilinde olan kısım bu kadar arkadaşlar.
Makalem umarım yardımcı olmuştur.Beni Takip etmeye devam edin !
Kaydol:
Kayıtlar (Atom)





