Tuesday, December 30, 2008

No parameterless constructor defined for this object.-LinqDataSource

No parameterless constructor defined for this object.
Böyle bir hata ile karşılaşıldığında LinqDataSource için verdiğimiz ContextTypeName için parametre geçirmek gerekir.Bunun için ContextCreating olayına aşağıdaki kodlar yazılır.

e.ObjectInstance = new NorthwindDataContext(WebConfigurationManager.ConnectionStrings["conn"].ConnectionString);

Tabii sizin connection stringiniz farklı olabilir.
kolay Gelsin.

Sunday, December 28, 2008

Read,Insert and Delete With XDocument(XLINQ)

Elimizde aşağıdaki şekilde bir xml dosyası olsun.
<musteri ad="serkan" soyad="polat" />
<musteri ad="veysel" soyad="tekin" />
<musteri ad="kemal" soyad="tekin" />
<musteri ad="asd" soyad="ad" />
<musteri ad="hasan" soyad="tekin" />
datas.xml dosyası olsun.
XDocument doc= XDocument.Load(Server.MapPath("datas.xml")); ile dosyayı okuyoruz.
Bu xml dosyasında olan verileri herhangi bir bir gridviewe basmak için ;
var mus = from p in doc.Descendants("musteri")
select new { Ad = p.Attribute("ad").Value, Soyad = p.Attribute("soyad").Value };
Descendants komutu ile xml bulunan her bir musteri kaydı için çalışır ve herbir musteride bulunan özellikler kullanılarak isimsiz sınıf oluşturulur.Daha sonra bunu gridview yansıtmak için bilinen komutlar uygulanır.
grd.DataSource = mus;
grd.DataBind();

Yeni bir musteri eklemek için ise sayfamızda iki textbox yerleştirdikten sonra;
XElement element = new XElement("musteri", new XAttribute("ad", txtAd.Text), new XAttribute("soyad", txtSoyad.Text)); bir musteri oluşturulur.
var cur = (from p in doc.Descendants("musteri")
where p.Attribute("ad").Value == "engin"
select p).Single(); ->kodlar ile musterilerden herhangi biri seçilir ve oluşturduğumuz element bundan sonra eklenir.
cur.AddAfterSelf(element);
doc.Save(Server.MapPath("datas.xml")); -->dosyaya yazılır.
Herhangi bir musteriyi silmek için ise;
cur.Remove() komutu kullanılır.