CategoryVeritabanı

ADO.NET Kullanışlı Fonksiyonlar

A

adonet

Yerini Entity Framework’e bıraksa da küçük çaplı projelerde halen severek kullanmaya devam ettiğim veri erişim sağlayıcısıdır kendileri..

Bir gün Ado.Net ile yazılım geliştirirken Insert, Update ve Delete işlemleri için her seferinde sql sorgusu yazmanın ve bu sorgulara tek tek AddWithValue işlemi yaparak parametre göndermenin benim için aslında ne kadar çok zaman kaybettirdiğini fark ettim ve bu süreyi kısaltmanın çözümlerini aradım. Ayrıca yazdığım Sql sorgularında da dikkatsizlik nedeniyle yazım hataları olabiliyordu.

Çözüm olarak Insert, Update ve Delete işlemleri için üç farklı method geliştirdim. Bu methodlar hem parametre ile gönderim yaparak hız ve güvenli sağlayacak hem de sql sorgularını kendi oluşturarak hata yapma olasılığını sıfırlayacaktı.

(daha&helliip;)

MySQL Servisini Manuel Olarak Ekleme

M

Şu ana kadar tüm MySQL kurulumlarım sorunsuz geçmesine rağmen ilk defa MySQL kurulumunda bir hata yaşadım ve kurulum sonrasında nedense servis adı, root kullanıcı gibi ayarlamaları yaptırmadan kurulum işlemini tamamladı. Bu işlemler yapılmadığı için de Windows Servislerinin arasına MySQL’i eklemedi.

MySQL ile ilgili işlemler yapmak istediğimde sürekli yukarıdaki hatayı aldım. İnternette biraz araştırma yaptım ama yaşadığım sorunla ilgili kesin çözüm bulamadım. Bir kaç yerde bug olarak bildirimde bulunulmuş.

Sonrasında aşağıdaki yolu deneyerek çözümü keşfettim :)

  1. Başlat menüsünden “cmd” yazarak komut penceremizi açıyoruz.
  2. cd komutlarıyla C:\Program Files\MySQL\MySQL Server 5.6\bin dizinine kadar ilerliyoruz. (Sizdeki sürüm farklıysa ilgili klasöre gidersiniz.)
  3. mysqld.exe – install komutunu çalıştırıyoruz.

Bu işlemler sonrasında Windows Servislerimiz arasına MySQL ekleniyor.

 

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created

S

prevent

SQL Server Management Studio üzerinde veritabanındaki bir tablo üzerinde değişiklik yapmak isteğinizde standart olarak aşağıdaki hatayı verir ve değişiklik yapmanıza izin vermez. Bunun nedeni tablolarınıza müdahale edilmesini engellemektir ve güvenlik nedeniyle açık gelir. Özellikle Code First bir proje yazıyorsanız  Designer üzerinden tablolarınızın yapısının değiştirilmesi projelerinize ciddi zararlar verebilir.

Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

SQL Server Management Studio üzerinden bu değişikliklere izin vermek için aşağıdaki adımları takip edin;

1. Tools menüsünden Options‘a giriyoruz.
2. Soldaki listeden Designers bölümüne geliyoruz.
3. Prevent saving changes that require table re-creation bölümü checkli gelecektir bu check’i kaldırıyoruz.
4. Ok’a basarak keyfimize bakıyoruz :)

 

 

 

MySQL Specified key was too long; max key length is 767 bytes

M

Entity Framework ile birlikte MySQL kullanırken karşılaştığım hatalardan bir tanesi daha :) update-database komutu sonrası __migrationhistory tablosunu oluşturmaya çalışırken bu hatayı fırlatıyor. Sistemimizin çalışmasına engel olmasa da biz hatanın çözümüne bakalım.

“MySQL Specified key was too long; max key length is 767 bytes”

Hatanın çözümü için MySQL Context’imizin içerisinde classımızın başlangıç satırının bir üstüne aşağıdaki kodu ekliyoruz.

[csharp][DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))][/csharp]

mysql_ef_conf

Yani Context’ imizin database yapılandırmasının tipini MySQL Entity Framework yapılandırmasına göre ayarla diyoruz. Entity Framework üzerinde MySQL ile çalışacaksanız bunu her seferinde yazmanızı tavsiye ederim.

No MigrationSqlGenerator found for provider ‘MySql.Data.MySqlClient’.

N

No MigrationSqlGenerator found for provider ‘MySql.Data.MySqlClient’. Use the SetSqlGenerator method in the target migrations configuration class to register additional SQL generators.

Entity Framework Code First ile birlikte MySQL veritabanı kullanmak istediğimde yukarıdaki hata ile karşılaştım. Kısaca diyor ki Microsoft SQL Server dışında bir veritabanıyla çalışacaksan Sql Generator’ını eklemen gerekiyor.

Migration işlemimi yaptığım Configuration.cs içerindeki constructor‘a aşağıdaki kodu eklemem yeterli oldu.

[csharp]SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());[/csharp]

mysql_migration_entity_framework

Entity Framework ile MySQL kullanmak MSSQL’e göre veya  Ado.Net ile MySQL’e bağlanmaya göre biraz daha karmaşık. Maalesef Türkçe kaynak yok denecek kadar az, bununla ilgili Türkçe bir makale yazsam iyi olacak gibi :)

C# Lambda İfadeleri ve Kullanımları

C

lambda

 

Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki Lambda Calculus’un C# ve Visual Basic’e uyarlanmasıdır.

Lambda İfadeleri kullanarak parametre geçilebilen ve değer döndüren isimsiz yerel fonksiyonlar oluşturabilirsiniz. Bu ifadeler genelde basit işlemleri bildirmekte kullanılabilir.

Kendim için aldığım lambda ifadeleri ve kullanımları notlarını blog takipçilerimle de paylaşıyorum.

(daha&helliip;)

Out of sync with server

O

Out of sync with server

MySQL’ de alınan bu hata Microsoft.NET ile MYSQL’ e bağlanırken connector üzerinde bulunan bir bug dan kaynaklanıyor. Çözüm için Mysql Connector aracınızı güncelleyebilirsiniz. Sorun düzelmez ise son çare olarak kullandığınız MYSQL sürümünü güncellemenizi tavsiye ederim.

Column count doesn’t match value count at row 1

C

Column count doesn’t match value count at row 1
Yukarıdaki hata MySQL veritabanına insert yaparken (yeni kayıt girerken) kolon eşleşmesinde hata olduğunu belirtiyor. Bu hata aşağıdaki nedenlerden oluşabilir;

  • Parametre ile gönderim yapıyorsanız kolon sayısı ile parametre sayısı birbirine eşit olmayabilir.
  • Varolmayan bir kolon adı girebiliyor olabilirsiniz.
  • Kolonlardan birinin adını eksik girebiliyor olabilirsiniz.

Hatanın çözümü için gönderdiğiniz SQL’ i kontrol etmekte fayda var.

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.