Alter Table Alter Column failed because column does not exist in table hatası ve çözümü

Merhaba arkadaşlar,

Bildiğiniz üzere Entity Framework Migrations ile çalışırken, veritabanında oluşturulacak tüm tablo ve alanları SQL Server üzerinden oluşturmamıza gerek yoktur. Projemizdeki veritabanı class modellerimizde yapmış olduğumuz düzenlemleri “update-database -verbose” komutu ile veritabanına kolaylıkla aktarabiliyoruz. Bazı senaryolarda veritabanı güncellenirken “Alter Table Alter Column failed because column does not exist” hatası ile karşılaşabilirsiniz.

Bu yazımda “Alter Table Alter Column failed because column does not exist” hatası ve çözümünü sizinle paylaşmak istedim.

Alter Table Alter Column failed because column does not exist in table hatasının nedeni ilgili tabloyu veya bu tabloya ait bir kolonu manuel SQL Server üzerinden değiştirdi iseniz bu sorunla karşılaşabilirsiniz.

Çözümü ise gayet basittir.

Yaptığınız tüm değişikleri görmezden gelip, yeni bir Migration class oluşturması için aşağıdaki kodu Package Manager Console‘a giriyoruz.

Kodun çalışması tamamlandıktan sonra dikkat edeceğiniz üzere solution içerisinde Migrations klasöründe günün tarihi ve saati yazılı bir class eklendiğini göreceksiniz. Bu class’ı açarsanız, UP ve DOWN metodlarının içinin boş olduğunu yani herhangi bir düzenleme olmadan sıfır bir migration class’ı elimizde var olacak.

Hemen akabinde tekrardan Package Manager Console‘a aşağıdaki kodu yazarsanız sorunsuz bir şekilde veritabanındaki düzenlemelerin aktif olduğunu göreceksiniz.

Görsel üzerinden takip etmek isterseniz, aşağıdaki şemayı inceleyebilir, adımları takip edebilirsiniz.

Bu basit ama çözümü baş ağrıtan sorunu da sizlerle paylaşmış oldum, umarım faydalı olmuştur.

Bir sonraki yazımda görüşmek üzere, şimdilik hoşçakalın 🙂

C# DataTable To Object Mapping

Merhaba arkadaşlar,

Bugün uzun zamandır paylaşmak istediğim çok kullanılan bir convert işlemi üzerine yazı eklemek istedim.

Bazı durumlarda gerekli olan LINQ sorguları projemiz içerisinde gerçekten can sıkıcı ve zorlayıcı olabiliyor.

Burada imdada T-SQL veya farklı bir yol ile çekilen dataların, objemizin içine map’lenmesi yolu yetişiyor.

Senaryomuza göre, Video classımıza bir DataTable‘dan dataların maplenmesini göstereceğim.

Video Classımızın içeriği aşağıdadır.

dtVideoList DataTable’ımıza verileri çektik.

Ardından aşağıdaki gibi map’lemek istediğimiz sorgumuzda yer alan VideoID, VideoTitle, VideoCreatedOn, Count alanlarımız Video classımızda yer alan ID,Title, CreatedOn, ViewCount alanlarına maplenmiş olacak.

Son durumda ise sorgumuzda gelen datalar başarı ile Video classımızdaki alanlar ile map’lendi. Bundan sonrası sizin gerçekleştirmek istediğiniz işlemlere göre gerçekleşebilir.

Umarım faydalı olmuştur, bir sonraki yazımda görüşmek üzere

Linq ile önceki ve sonraki kayıtlara ulaşmak

Merhaba arkadaşlar,

Bir proje için kullanmam gereken bir kod parçasını paylaşacağım. Siz kendi ihtiyaçlarınız kapsamında gerekli düzenlemeleri yapabilirsiniz.

Senaryomuz şöyle: Bir haber detay sayfası içerisinde iken bir önceki ve bir sonraki haberlere gitmek için bağlantılarımız mevcut. Bu bağlantıların yer aldığı View‘a Controller‘ımızdan görüntülenen haberden bir önceki ve bir sonraki kayıtların ID‘lerinin atanması gerekmekte.

Bunun aşağıda paylaşmış olduğum kod ile kolaylıkla yapabilirsiniz.

LINQ Hata: The type of one of the expressions in the join clause is incorrect

Merhaba arkadaşlar,

Bu sorunun nedeni büyük ihtimal ile dikkatsizliğimizden kaynaklanır 🙂

LINQ yazarken birden fazla sorguyu join ile birleştirdiğimizde “the type of one of the expressions in the join clause is incorrect” hatası alıyorsanız, sorgu içerisindeki eşleştirdiğiniz alanların tiplerinin aynı olmasına dikkat ediniz.

Hemen örnek kod parçamızı ve sorunun çözümünü aşağıda göstermek istiyorum.

Bir sonraki yazımızda görüşmek üzere

LINQ sorgusunda aynı gün kontrolü (EntityFunctions.TruncateTime)

Merhabalar,

Bir senaryoya göre, projeye giriş yapan kullanıcıların aynı gün içerisinde tekrar girip girmediğini kontrol etmemiz gerekiyor.

Bunun için öncelikle LoginDate değişkenimize, bugüne ait zaman gün bilgilerini Date sınıfını kullanarak atıyoruz.

Hemen ardından LINQ sorgumuzda bu değişkeni, Entity Framework tarafından gelen objemize eşit olup olmadığını kontrol edeceğiz. Bu kontrolü .NET 4.0 ve üzeri tarafından desteklenen EntityFunctions.TruncateTime fonksiyonunu kullanarak gerçekleştirebiliriz.

Kısaca senaryomuz bu şekilde, hemen aşağıda ise bu senaryoyu kod tarafında hayata nasıl geçirebiliriz ona ait bir örnek paylaştım.

Umarım işinize yarar, çalışmalarınızda kolaylıklar dilerim.

Entity Framework Validasyon Hatalarını Yazdırmak (EntityValidationErrors)

Merhabalar,

Entity Framework üzerinde (_db) context’imize kayıt edeceğimiz dataların validasyon hatalarını yazdırmak için aşağıdaki kod bloğunu kullanabiliriz.

Böylelikle validasyona ait hata döndüğünde tek tek hataları görüntüleyebilir ve çözüm üretebiliriz.

Namespace’lerimiz