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);
}
}1 comment » | Csharp - C#
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();
Comment » | Csharp - C#