ROUTE:

 

Route dediğimiz olay; hazırladığınız web alt yapısının internet ortamından bulunmasını sağlar. Sizin web altyapınız ne kadar özgün ise diğer kullanıcıların sizi bulması kadar kolay olacaktır. Bu bulmayı kolaylaştıran yapı da Route yapısıdır.

Klasik ASP.NET ortamındaki işleyiş şekildeki gibidir. Yani sayfa isteğiniz ASP.NET sunucusuna gidr ve size sayfa sunulur.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip98.jpg

 

 

 

 

 

Oysa MVC 5 yapısında site ismi yazdığınızda route tarafından bilgiler değerlendirilerek uygun action metodunun çıktısı size iletilir. Bu da muazzam bir hız farkı doğurur.

 

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip99.jpg

 

 

 

 

ASp.Net MVC yapısından bir talepte bulunduğumuz zaman Controller içindeki Action çağrılır ve Action istediği sonucu istediği View parçasını geri döndürebilir. Sunucu da fiziksel olarak bir sayfa yapısı olmadı içinde esnekliğin yanı sıra güvenlik de sağlar.

 

Ayrıca bir Controller’ın varsayılan action’ı yerine istediğimiz bir action’ı istediğimiz bir isimle çağırabiliriz.

Varsayılan olarak RouteConfig içinde aşağıdaki ifade vardır. Bunun anlamı Home kontrolü içindeki Index action’ı yükler.

routes.MapRoute(

                name: "Default",

                url: "{controller}/{action}/{id}",

                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

Ancak biz istersek aşağıdaki gibi değiştirebiliriz. Bunun anlamı yuksel1 yazdığımız zaman(http://localhost ifadesinden sonra) direk olarak oku içindeki Index sayfasını karşımıza getirecektir.

routes.MapRoute(

               name: "Default",

               url: "yuksel1",

               defaults: new { controller = "oku", action = "Index"}

 

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip93.jpg

 

 

 

 

 

 

public class RouteConfig

    {

        public static void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

            routes.MapRoute(

                name: "Default",

                url: "{controller}/{action}/{id}",

     defaults: new { controller = "User", action = "Index", id = UrlParameter.Optional              }

            );

        }

    }

MVC içinde bu zamana kadar Route  özeliği varsayılan olarak "{controller}/{action}/{id}" şeklinde çalışmaktadır. Yani sayfa isteğinde bulunduğumuzda kontroller tarafından yapılacak iş en kısa yoldan yönlendirilmektedir.

 

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip94.jpg

 

 

 

 

 

 

 

Aynı olay MVC5’de de devam etmektedir. Bu yapıyı istediğimiz gibi düzenleyebilir ve çoğaltabiliriz.

MVC 5’de gelen yenilik ise bunu Action’a göre tanımlayabiliyoruz. Yani her Action için ayrı bir Route yapısı tanımlamak mümkündür. Yani Home klasörü altında bulunan bir sayfaya yüksel yazarak  ulaşabilirim. Veya Home/Adres klasörü yerine Kavun/Karpuz yazarak da ulaşabiliriz. Bir nevi gerçek yolu da gizlemiş oluyoruz.

 

72) Bir önceki uygulamamızdan devam ediyoruz. RouteCongif.cs dosyasına aşağıda büyük harfle yazılmış ifadeyi ekliyoruz .Bu ifade; map yapmak için gerekli bir yapıdır.

   public static void RegisterRoutes(RouteCollection routes)

        {

 

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

            routes.MapMvcAttributeRoutes();  //Bu eklendi

 

            routes.MapRoute(

                name: "Default",

                url: "{controller}/{action}/{id}",

                defaults: new { controller = "User", action = "Index", id = UrlParameter.Optional }

            );

        }

 

 

73) HomeController.cs  dosyasını açarak  Welcome ve zaman actionlarının başında Route ifadesini aşağıdaki gibi ekliyoruz.

        [Route("kavun")]

        public ActionResult Welcome()

        {

            ViewBag.Message = "Merhaba Dünyalı Hoş Geldin";

            return View();

        }

 

        [Route("karpuz")]

        public ActionResult zaman()

        {

            ViewBag.Message = "Zaman zaman o zaman";

            return View();

        }

 

74) Sayfayı yükleyip bu projemize geçip kavun ve karpuz yazarak olayları gözlemleyebiliriz.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip95.jpg

 

 

 

 

 

 


 

Aynı zamanda linkten seçtiğimi de de gerçek yolu yerine kavun veya karpuz yazacaktır.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip96.jpg

 

 

 

 

 

 

 

 

 

 

75) Peki bunu Home için nasıl yapacağız. Erik yazınca bu sayfa gelsin.

 

76) Bunun için Index Action yapısını aşağıdaki gibi yapılandırırız.

      [Route("erik")]

        public ActionResult Index()

        {

            return View();

        }

 

77) Eğer baştan beri aynı proje içinde iseniz o zaman index.aspx sayfasında en son HyperText’in özelliklerinden Url kısmındaki home ifadesini erik ile değiştiririz.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip97.jpg

 

 

 

 

 


 

78) Ben parametreyi RouteConfig içinden yollamayacağım. Bunun yerine daha kullanışlı bir yapı oluşturacağım. Bunun için eğer veri tabanlı bir projede çalışmıyorsanız ilk yaptığımız User yapısındaki projenizi açınız. Ardından Controllers klasörü içindeki UsersController.cs dosyasını açarak hemen başa aşağıdaki  ifadeyi ekleyiniz.

namespace ders0.Controllers

{

    public class UserController : Controller

    {

        private UserDbContext db = new UserDbContext();

 

 

        public ActionResult kaynoyaz(int id)

        {

            return View(db.Users.Where(i => i.ID == id).SingleOrDefault());

        }

 

…….

Yukarıda i değişkeni tanımlıyor ve bu yapıda sütun adlarını => işaretinden sonra kullanıyoruz.

Single : Tek bir eleman döndürdüğünden emin olduğunuz sorgular için kullanın, eğer sorgu birden fazla eleman döndürecek olursa hata oluşacaktır.
SingleOrDefault : Hiç eleman dönmez ise  tipin varsayılan değerini ya da nothing değeri dönecektir. Yine birden fazla değer varsa hata verir.
First : Dönen sorgu sonucunun ilk elemanını döndürecektir.

FirstOrDefault : Hiç eleman dönmez ise tipin varsayılan değerini ya da nothing değeri dönecektir.

79) Ardından Users klasörü üzerinde sağ tuşa basarak Add View seçeneğine tıklayalım. Ve aşağıdaki gibi yapılandırarak ekleyelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip142.png

 

 

 

 

 

 

 

 

 

 

 

 

80) Oluşan yeni View içindeki kodlar şekildeki gibidir.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip101.jpg

 

 

 

 

 

 

 

 

 

 

          

 

 

81) Projeyi yükleyerek http://localhost:numaraneyse/users/kaynoyaz/2 dediğimiz zaman 2 numaralı kayıt karşımıza gelecektir.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip144.png

 

 

 

 

 

 

 

 

 

 


 

82) Yalnız olmayan bir numara girince sayfa çakılacaktır. Bunu önlemek için kaynoyaz.html sayfasının sonunu aşağıdaki gibi değiştirelim.

<p>

  

   

    @try

    {

    @Html.ActionLink("Edit", "Edit", new { id = Model.ID })

          

    }

    catch

    {

    }

    @Html.ActionLink("Back to List", "Index")

  

  

</p>

Yukarıda isterseniz bir hata sayfası oluşturarak için istediğinizi yazabilirsiniz ve hata durumunda bu sayfaya yönlendirirsiniz.

83) Daha kullanışlı bir hale getirmek için index.aspx sayfamıza bir TextBox koyarak AutoPostBack özelliğini True yapalım ve şekildeki gibi yapılandıralım.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip106.jpg

 

 

 

 

 

 

84) TextBox1_TextChanged olayına aşağıdaki kodları yazarak çalıştıralım.

  protected void TextBox1_TextChanged(object sender, EventArgs e)

   {

      Response.Redirect(String.Format("~\\Users\\kaynoyaz\\{0}",TextBox1.Text));

   }


 

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip107.jpg

 

 

 

 

 

 

 

 

 

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip108.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Eğer olmayan bir kayıt numarası girdiğiniz zaman yukardaki değerler boş gelecektir.


 

85) Şimdi başka bir özel sorgulama yapalım ancak başlamadan önce yukardaki örnekle bağlantılı bir şey yapalım. Dedik ki birden fazla route ve bir isim vererek hem yol gizlenebilir hem de esneklik sağlanabilir.  Bunu görmek için RouteConfig.cs dosyası içinde varsayılan Route tanımlamasının üstüne aşağıdaki ifadeyi ilave edelim.(ALTINA OLMAZ!)

   routes.MapRoute(

               name: "y1",

               url: "yuksel1",

               defaults: new { controller = "User", action = "kaynoyaz",id=2 }

           );

 

Yani son görüntü şekildeki gibi olmalı.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip109.jpg

 

 

 

 

 

 

 

 

 

 

86) Uygulamayı çalıştırıp http://localhost:numara/yuksel1 yazdığımız zaman 2 numaralı kayıt karşımıza gelecektir.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip110.jpg

 

 

 

 

 

 

 


 

87) Aşağıdaki yazılımları kullanarak bir URL sayfasına link verebiliriz._HomeLayout sayfasına ilave edebiliriz.

  <li><a href="http://microsoft.com">Microsoft Sayfası</a></li>

 

Veya

 

  <li><input id="Button1" type="button" value="Microsoft" onclick="hh()" /></li>

  

Ancak ikinci satırı kullanacaksak; hh scriptini aşağıdaki gibi tanımlamamız gerekir.

<script type="text/javascript">

    function hh()

    {

    window.open("http://microsoft.com");

    }

</script>

 

 

Çalıştırdığımızda görüntü şekildeki gibi olacaktır.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip146.png

 

 

 

 


 

VERİ TABANI İLE ÇALIŞMAK:

 

Bir önceki genel uygulamamızda değindiğimiz veri tabanı yapısını şimdi daha detaylı ve tane tane imceleyelim. Burada yapacağımız uygulama ile Model ve Controller yapısının işleyeni daha iyi anlayacağınızı umuyorum.

UYGULAMA:

 

1) ders4 adı ile yeni bir Empty MVC 5 uygulaması oluşturalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip147.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2) Model klasörü içinde eleman isimli bir class oluşturalım.

 

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip272.jpg

 

 


 

3) İçindeki kodlar aşağıdaki gibi olsun.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

namespace ders3.Models

{

    public class eleman

    {

        public string Ad { get; set; }

        public string Soyad { get; set; }

        public int Maas { get; set; }

    }

}

 

4) Controller klasörü içinde elemanlarController isimli boş bir kontrol oluşturalım.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip273.jpg

 

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip148.png

 

 

 

 

5) İçinde ViewGetir isimli Action’ı aşağıdaki gibi oluşturalım.

En üste modelimi belirtmek için aşağıdaki using ifadesini koyuyoruz.

using ders4.Models; //Bunu ekledik

  public ActionResult ViewGetir()

        {

            eleman ele = new eleman();

            ele.Ad = "Alex";

            ele.Soyad = "DE Souza";

            ele.Maas = 20000;

 

            ViewBag.eleman = ele;

            return View("BenimView");

        }

6) Blok içinde sağ tuşa basarak BenimView isimli bir View oluşturalım.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip275.jpg

 

 

 

 

 

 

 

 

 

7) Bunun sonucunda BenimView şeklideki gibi oluşacaktır.

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip276.jpg

 

 

 

İçini aşağıdaki gibi yapılandıralım.

 

@{

    ViewBag.Title = "BenimView";

}

 

<h2>BenimView</h2>

<html>

 

<body>

    <div>

      

        @{

            ders4.Models.eleman ele = (ders4.Models.eleman)

                ViewBag.eleman;

        }

        <b>Personel Bilgileri</b><br />

        Eleman Adı : @ele.Ad @ele.Soyad <br />

        Eleman Ücreti: @ele.Maas.ToString("C")

    </div>

</body>

</html>

 


 

8) RouteConfig dosyasını aşağıdaki gibi yapılandıralım ve sayfayı yükleyelim.

defaults: new { controller = "elemanlar", action = "ViewGetir", id = UrlParameter.Optional }

Sayfayı yüklediğimizde görüntü şekildeki gibi olacaktır.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip149.png

 

 

 

 

 

 

 

9) Eğer kuruş hanesi istemiyorsanız ve $ işareti çıkmasını istiyorsanız BenimView.cshtm dosyasında fiyat satırını aşağıdaki gibi değiştirmeniz gerekir.

Eleman Ücreti: @ele.Maas.ToString("N0")  $

Açıklama: C:\Users\sanane\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip278.jpg

 

 

 

 

 

 

 

Bu uygulamada ViewBag kullanarak Model içindeki bilgileri View içine yolladık.

10) Şimdi koşul koyalım. Eğer Maaş 15000 den büyükse zemin rengi sarı değilse yeşil olsun. Bunun için BenimView.cshtm dosyasında aşağıdaki satırı iptal ediyoruz.

Eleman Ücreti: @ele.Maas.ToString("N0")  $

Onun yerine aşağıdaki satırları koyuyoruz.

      @if(ele.Maas>15000)

        {

            <span style="background-color:yellow">

            Eleman Ücreti: @ele.Maas.ToString("N0")  $

            </span>

        }

        else

        {          

            <span style="background-color:green">

            Eleman Ücreti: @ele.Maas.ToString("N0")  $

            </span>

         }

11) Çalıştırarak sonucu görelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip150.png

 

 

 

 

 

 

 

12) Birde 10000 yaparak deneyelim.

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip151.png

 

 

 

 

 

 

 

 


 

EMPTY CODE FIRST MODEL:

 

Esasında bu yapıyı önceki uygulamalarımızda yaptık. Code ile veri tabanını tanımladık. Daha sonra Context yardımı ile ilişkiye geçtik ve veri alışverişi sağladık. Şimdi grafiksel olarak daha kısa yoldan aynı işlemi yapmaya çalışacağız.

Ben ders4 uygulamasından devam ediyorum, isterseniz yeni bir uygulama açabilirsiniz.

13) Model üzerinde sağ tuşa basarak  ADO.NET Entity Data Model seçimini yapalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip152.png

 

 

 

 

 

 

14) İsmine s diyelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip153.png

 

 

 

 

15) Empty Code First model seçimi yapalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip154.png

 

 

 

 

 

 

 

 


 

16) En alta inerek aşağıdaki kodları yazalım.

  public class Personel

    {

        public int Id { get; set; }

        public string Ad { get; set; }

        public int Yas { get; set; }

    }

Projemizi derleyelim….

17) Controller üzerinde sağ tuşa barak Add /Controller seçimi yapalım. Ardından şekildeki seçimi yapalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip161.png

 

 

 

 

 

 

18) Üst kısımdan Modelimizi seçelim. Şekildeki gibi yapılandıralım. Dikkat edin bir Context yazmadık.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip163.png

 

 

 

 

 

 

 

 

 

 

 

Bu işlem sonucunda PersonelsController ve bununla ilişkili View’lar otomatik oluşacaktır.


 

19) RouteConfig.cs dosyamızı aşağıdaki gibi değiştirelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip165.png

 

20) Çalıştırdığımızda şekildeki gibi ilk ekran gelecektir. Şimdi kayıt girebiliriz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip167.png

 

 

 

 

 

 

 

 

 

 

 

 

21) Web.config  dosyasına da veri tabanı ile ilgili kodu otomatik olarak yazmıştır.

<connectionStrings>

    <add name="s" connectionString="data source=(LocalDb)\v11.0;initial catalog=ders4.Models.s;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

  </connectionStrings>

 

22) Daha önceki yazdıklarımızda olsun bu örneğimizde olsun başlıkları istediğimiz gibi değiştirmek içim model dosyamızı açarak aşağıdaki gibi yapılandıralım.

İlk olarak en üste aşağıdaki namespace yapısını ilave edelim;

using System.ComponentModel.DataAnnotations; //Ekledik

public  class Personel

    {

       

        public int Id { get; set; }

 

        [Display(Name = "Personel Adı")]

        public string Ad { get; set; }

        [Display(Name = "Personel Yaşı")]

        public int Yas { get; set; }

    }

23) Çalıştırdığımızda görüntü şekildeki gibi olacaktır.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip192.png

 

 

 

 

 

 

 

 

 

 

Tabii bu özellik her yere yansıyacaktır;

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip193.png

 

 

 

 

 

 

 

 

 

 

 

 


 

24) Bu tanımladığımız tablo içeriği otomatik olarak oluşmuştur ve karekter değerlerini de nvarchar(MAX) oalrak algılamıştır. Bu ilerde göreceğimiz validatorlar için sorun çıkartabilir. Şimdi oluşturacağımız model de veri tipini  belirleyelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip191.png

 

 

 

 

 

 

 

25) s2.cs isimli Class dosyamızı ADO.NET Entity Data Model seçimi yaparak oluşturalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip195.png

 

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip196.png

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip197.png

 

 

 

 

 


 

26) İçini aşağıdaki yapılandıralım. Dikkat ederseniz sütunların veri tiplerini de belirliyoruz.

En üste aşağıdaki namespace yapılarını ekleyelim;

  using System.ComponentModel.DataAnnotations; //Başlıklar için

  using System.ComponentModel.DataAnnotations.Schema; //Veri tipleri için

 

İstersek classın hemen üstüne aşağıdaki ifadeyi ekleyerek tablonun sahipliğini de belirleyebiliriz.

[Table("Personel2", Schema = "dbo")]

 

public  class Personel2

    {

       

        public int Id { get; set; }

 

        [Column("Ad", TypeName = "varchar")]

        [StringLength(50, MinimumLength = 3)]

        [Display(Name = "Personel Adı")]

        public string Ad { get; set; }

 

 

 

        [Column("Yas", TypeName = "int")]

        [Display(Name = "Personel Yaşı")]

        public int Yas { get; set; }

 

        [Required]

        [Column("Cins", TypeName = "char")]

        [Display(Name = "Personel Cinsiyeti")]

        [StringLength(8, MinimumLength = 3)]

        public string Cins { get; set; }

    }

 

27) Projemizi derledikten sonra, bu modeli kullanarak bir Personel2sController’ı oluşturalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip198.png

 

 

 

 

 

 

 


 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip199.png

 

 

 

 

 

 

 

 

 

 

 

28) RouteConfig.cs  dosyasını aşağıdaki gibi yapılandıralım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip200.png

 

 

 

29) Artık projemizi çalıştırarak test edebiliriz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip201.png

 

 

 

 


 

30) Kayıt girelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip202.png

 

 

 

 

 

 

 

 

 

 

 

 

31) Kurala uymayan kayıt girelim.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip203.png


 

32) Eğer buradaki mesajları Türkçeleştirmek isterseniz kodları aşağıdaki gibi değiştirmeniz gerekir.

public  class Personel2

    {

       

        public int Id { get; set; }

 

        [Column("Ad", TypeName = "varchar")]

        [StringLength(50, MinimumLength = 3,ErrorMessage = "Maksimum 50 Minumum 3 karekter girebilirsiniz.")]

        [Display(Name = "Personel Adı")]

        public string Ad { get; set; }

 

 

 

        [Column("Yas", TypeName = "int")]

        [Display(Name = "Personel Yaşı")]

        public int Yas { get; set; }

 

        [Required(ErrorMessage = "Boş Geçemezsiniz")]

        [Column("Cins", TypeName = "char")]

        [Display(Name = "Personel Cinsiyeti")]

        [StringLength(8, MinimumLength = 3,ErrorMessage = "Maksimum 8 Minumum 3 karekter girebilirsiniz.")]

        public string Cins { get; set; }

    }

 

33) Çalıştırıp test ettiğinizde görüntü şekildeki gibi olacaktır.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip205.png

 


 

34) Tabloyu incelediğinizde MAX ifadesi yerine sayısal uzunluk değerlerinin geldiğini göreceksiniz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip204.png


 

CODE FIRST FROM DATABASE:

 

Şimdi ise oluşturulmuş bir veri tabanı ile ilişkiye geçeceğiz. Bunun için ilk oalrak bir veri tabanı oluşturalım. Yine bir önceki uygulamamdan devam ediyorum ancak isterseniz yeni bir uygulama açabilirsiniz.

 

35) App_Data üzerinde sağ tuşa basarak Add/New Item seçimi yapalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip168.png

 

 

 

36) SQL Server Database seçimi yaparak ismine ankara.mdf diyerek onaylayalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip169.png

 

 

 

 

 

 

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip170.png

 

 


 

37) App_Data altındaki ankara.mdf dosyasının üstüne iki kez tıkladığımızda Server Explorer penceresi açılacak ve görüntü şekildeki gibi olacaktır. Burada Tables klasörü üzerinde sağ tuşa basarak Add New Tables seçimi yapalım.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip171.png

 

 

 

 

 

 

 

 

 

38) İlk iş olarak alt kısımda görülen ID tanımlamasına bir identity ilave ediyorum. Bunun anlamı Id numarasını otomatik oalrak kendi üretiecek.1’den başlayacak 1’er 1’er artacak.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip172.png

 

 

 

 

 

39) Tablomu şekildeki gibi yapılandırıyorum. Alttaki T-SQL kısmında ismini Sicil yapıyorum.

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip173.png

 

 

 

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip174.png

 

 

 

 


 

40) Update ve UpdateDatabase  butonu ile tablomu oluşturuyorum.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip175.png

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip176.png

 

 

 

 

Girmek zorunda olmamama rağmen aşağıdaki örnek kayıtları giriyorum.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip189.png

 

 

 

 

 

 

 

41) Model klasörü üzerinde sağ tuşa basarak Add/ADO.NET Entity Data Model seçimi yapıyoruz.

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip177.png

 

 

 

 

 

 


 

42) İsmine Persicil diyoruz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip178.png

 

 

 

 

43) Code First from Database seçimi yapıyoruz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip179.png

 

 

 

 

 

 

 

 

 

44) Next butonuna bastıktan sonra Listeden ankara.mdf seçimi yapıyoruz. Dikkat ederseniz web.config içine yazılacak ifadeler de otomatik olarak aşağı kısımda göründü. Tekrar Next butonuna basıyoruz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip181.png


 

45) Tablomuzu seçerek Finish  ile sonlandırıyoruz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip182.png

 

 

 

 

 

 

 

46) Projemizi derledikten sonra, bu modeli kullanarak PersicilsController oluşturalım.

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip183.png

 

 

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip184.png

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip185.png

 

 

 

 


 

47) RouteConfig.cs dosyasında controller kısmını Sicils olarak değiştirelim.

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip187.png

 

 

48) Projemizi çalıştırdığımızda ilk gelen ekranda girmiş olduğumuz kayıtlar şekildeki gibi listelenecektir. Bizde yeni kayıtlar girebilir değişiklik silme yapabiliriz.

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip188.png

 

 

 

 

 

 

 

 

 

 

Açıklama: C:\Users\yukse_000\AppData\Local\Temp\SolidDocuments\SolidCapture\captureclip190.png