Bu makalemizde Asp.Net MVC 3 ve Entity Framework kullanarak SELECT işlemini yapıp ekranda göstereceğiz. İlerleyen makalelerimizde bu örnek üzerinden devam ederek INSERT, UPDATE ve DELETE işlemlerini de gerçekleştireceğiz.
Veritabanı olarak SQL Server kullanıyorum. “Makale” isminde bir veritabanımız olsun, içinde de Yazar isminde bir tablomuz yer alsın. Yazar tablomuzun yapısı şu şekildedir :
Yeni bir Asp.Net MVC 3 Web Application – Empty Application oluşturalım (View Engine : Razor)
Öncelikle Ado.Net Entity Data Model’imizi “Entity” klasörünün altında oluşturalım.
Şimdi Yazar işlemlerimizi Entity Data Model’den bağımsız yapabilmek için bir Yazar modeli oluşturuyoruz. (direk veritabanı nesneleriyle değil, kendi ara nesnemizle işlem yapıyoruz.)
Bu işlem için Models klasörüne sağ tıklayıp yeni model ekliyoruz.
- public class MYazar
- {
- public int YazarId { get; set; }
- public string YazarAd { get; set; }
- public int MakaleSayisi { get; set; }
- }
Şimdi projemize YazarController isminde bir Empty Controller ekleyelim.
Controller’ı ekledikten sonra Controller’ın Index() methodunu şu şekilde düzenleyelim.
- public class YazarController : Controller
- {
- private MakaleEntities _entity = new MakaleEntities();
- public ActionResult Index()
- {
- var yazarlar = (from y in _entity.Yazar
- select new MYazar
- {
- YazarId = y.YazarId,
- YazarAd = y.YazarAd,
- MakaleSayisi = y.MakaleSayisi
- }).ToList();
- return View(yazarlar);
- }
- }
Projemizi bir kere build edelim ve Index() methodumuza sağ tıklayıp Add View diyelim.
Model Class olarak oluşturduğumuz modeli, template olarak da List’i seçiyoruz. Bu, MYazar değerimizden bir listenin işleme alınacağını belirtir.
Yazar/Index.cshtml dosyamızın oluşturulduğundaki kodları aşağıdaki gibidir.
Index.cshtml
- @model IEnumerable<MVCMakale3.Models.MYazar>
- @{
- ViewBag.Title = "Index";
- }
- <h2>Index</h2>
- <p>
- @Html.ActionLink("Create New", "Create")
- </p>
- <table>
- <tr>
- <th>
- YazarId
- </th>
- <th>
- YazarAd
- </th>
- <th>
- MakaleSayisi
- </th>
- <th></th>
- </tr>
- @foreach (var item in Model) {
- <tr>
- <td>
- @Html.DisplayFor(modelItem => item.YazarId)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.YazarAd)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.MakaleSayisi)
- </td>
- <td>
- @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
- @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
- @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
- </td>
- </tr>
- }
- </table>
Burada dikkat etmemiz gereken nokta : @Html.DisplayFor() methodudur. Bu method, parametre olarak aldığı değeri ekranda göstermektedir.
@foreach ile Model’deki (List<MYazar>) tüm değerleri tek tek dönüp ekranda yazdırıyoruz.
İkinci dikkat edilmesi gereken nokta, sayfanın en üstündeki @model IEnumerable<MVCMakale3.Models.MYazar> satırıdır. Bu satır, modelimizin türünü belirlemektedir. Index.cshtml oluştururken seçtiğiğmiz MYazar’ın tanımlama işlemi bu satır sayesinde gerçekleşmektedir.
Global.asax dosyamıza gidelim ve projemizin başlangıç sayfasını Yazar/Index.cshtml yapalım.
Global.asax
- public static void RegisterRoutes(RouteCollection routes)
- {
- routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- routes.MapRoute(
- "Default", // Route name
- "{controller}/{action}/{id}", // URL with parameters
- new { controller = "Yazar", action = "Index", id = UrlParameter.Optional } // Parameter defaults
- );
- }
Projemizi çalıştıralım ve sonucunu görelim.
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi