Tag: Linq


Row not found or changed. – LINQ – ChangeConflictException

November 25th, 2008 — 2:37pm

Linq to sql kullanırken eğer update etmek istediğiniz data çakışma hatası verirse hatayı yakalayıp sorunu çözebilirsiniz.

Datacontext nesnenizin ChangeConflicts collection’ında foreach ile dönerek duruma göre eski değeri yada yeni değeri veritabanına yazabilirsiniz. (KeepCurrentValues, KeepChanges, OverwriteCurrentValues)

try
{
     DataContextInstance.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException)
{
    foreach (ObjectChangeConflict conflict in DataContextInstance.ChangeConflicts)
     {
        conflict.Resolve(RefreshMode.OverwriteCurrentValues);
     }
}
  • Facebook
  • Twitter
  • StumbleUpon
  • del.icio.us
  • Digg

1 comment » | Csharp - C#

Veritabanına Resim Dosyası Eklemek (LINQ)

November 19th, 2008 — 5:00pm

Veritabanında resimleri varbinary(max) alanında tutabiliriz. (Image alanı eskimiş artık varbinary kullanalım.)

tblTabloAdi tablomuz olsun, Resim de resmi sakladığımız varbinary(max) alanımızın adı. LinqToSql class’ı ile wizard kullanıp DataContextInstance adında bir DataContext de oluşturduğumuzu var sayalım.

Aşağıdaki kod bir resim dosyasını okur, byte dizisine dönüştürür ve veritabanına kaydeder.

string resimPath = @"resim.jpg";
 
FileInfo resimInfo = new FileInfo(resimPath);
long resimBuyukluk = resimInfo.Length;
 
FileStream fs = new FileStream(resimPath, FileMode.Open);
byte[] dizi = new byte[Convert.ToInt32(resimBuyukluk)];
int iBytesRead = fs.Read(dizi, 0, Convert.ToInt32(resimBuyukluk));
fs.Close();
 
tblTabloAdi entity = (from p in DataContextInstance.tblTabloAdis select p).First();
 
entity.Resim = new System.Data.Linq.Binary(dizi);
 
DataContextInstance.SubmitChanges();
  • Facebook
  • Twitter
  • StumbleUpon
  • del.icio.us
  • Digg

Comment » | Csharp - C#

Back to top