Microsoft Temmuz haberleri, Build 2013

Merhaba arkadaşlar,

Biliyorum uzun süre oldu sizlerle bir bilgi paylaşmayalı. Evet doğrudur, hemen nedenini söylemek istiyorum. Geçtiğimiz günlerde oğlumun sünneti vardı ve bazen insan kod yazmayı bırakıp dinlenmek istiyor. Bu dinlenme aslında gerçek anlamda dinlenme değil, bir anlanmda kendini bir kanala odaklayıp , kendi gelişimini sağlama diyebiliriz.

Gelelim haberlere, Visual Studio 2013 sesleri gelmeye başladı. Ayrıca Visual Studio 2012 Update  3 duyuruldu, buradan indireblirsiniz

Microsoftun Build 2013 konferansı San Fransisco da yapıldı. burada Windows 8.1 işletim sisteminin duyurusu yapıldı.  Ben ce en önemli yeniliğin start tuşunun gelmesi deniyor. Ben ce tam olarak değil aslında. Butona tıklıyorsunuz, başlangıç ekranı geliyorr. Ben bunu zaten klavyeden bile yapıyordum. :) Windows 8.1 Buradan inceleyebilirsiniz.

Mobile servislerde kolaylıklar getirilmiş. Az kalsın unutuyordum, Microsoft artık ASP.NET MVC, Web Form, Web Matrix, Web API, ASP.Net gibi çok dallanan teknolojileri tek bir alanda ASP.NET olarak toplamaya karar vermiş. Bunun içinde bu teknolojilerin hepsi olacak. One ASP.NET bence gerekli idi.

Şimdilik görüşmek üzere. Daha yazacak kodlarım var.

Stored Procedure 1

Stored Procedure ler program yapısı olarak c# daki methodlara benzer. Bir işlemi birden fazla kullacak isek o işlemi SP(Stored Procedure) haline getirebiliriz. SP ler server ortamında saklanırlar. Bir SP maxsimum 32 farklı SP çağırabilir. Veri tabanının Programmability klasörün altında Stored Procedures klasörünün altında saklanırlar. SP için create, drop, alter ile oluşturabilir, silebilir veya düzenleyebiliriz. Sistem tarafından yazılmış SP bulunmaktadır. Çalıştırmak için
exec Procure_ismi parametre1, parametre2,parametre3 gibi yazım formatı bulunmaktadır.

CREATE PROCEDURE Ekle (@id int, @name nvarchar(120))
AS
BEGIN
SET NOCOUNT ON
IF @name is null or @id is null
--Bizim için bir şey ifade etmeyeceği için boş değer döndüreceğiz.RETURN 0
RETURN 0
ELSE IF EXISTS(SELECT * FROM Artist WHERE ArtistId=@id)
--bir artist var ise 
	UPDATE Artist SET Name=@name 
	WHERE  ArtistId=@id
ELSE
	--yoksa bu artisti ekle
	INSERT INTO Artist(Name) 
	VALUES (@name) 
END
SET NOCOUNT OFF
GO

SP oluşturduktan sonra geldik bunu çalıştırmaya. 

exec ekle 350,'Tarkan'
--Yazarsak ekleme yapacak


exec ekle 2,'Tarkan'
--yazaıp çalıştırsak 2 nolu artist olcağı için günceleme işlemi yapacaktır.

Dosya ekinde kullanılan chinook veri tabanının shema ve data script dosyası verilmiştir. Sizler sreate deyimiyile bu veri tabanını oluşturun ve ekteki script dosyasını çalıştırnız

 Chinook veri tabanını elde etmeniz için bir çok bulunmaktadır. bunlardan ilki Nuget Console den yüklenmektir. Bunun için gerekli açıklama sayfısını burdan görebilirsiniz.

Farklı serverlar için oluşturulmuş scriptler gerekiyorsa, Mesala SQL Server 201, bunun için buradan bilgi alabilir veya indirebilirsiniz.

Makale dosya ekinde bu veritbanını genel bir scripti eklenmiştir. 

Chinook.sql (2,36 mb)

MV4 Jquery ve ajax işlemleri, DropdownList Controlleri

Merhaba bu makalemizde birbiriyle ilişkili iki tablodan $.ajax methodlarıyla dropdownlistlere dolduracağız. sayfa ilk açıldığında kurs dropdown ı dolmakta, bu seçime göre de kinci dropdawn tetiklenmektedir. Tarayıcının F12 tuşlarına basrak gidenve gelen veriyi ayrıntılı görebilirsiniz. Veya fiddler programı ilede bu aradaki iletişimi göreblirsiniz.

Öncelikle Action metholarımızı yazalım. Ben hazır School veri tabanını kullandım. Studio 2012 de EntitiyFramework to Reverse işlemini tabi tutarak veri tabanından gittim, boylece POCO claslarımıda elde etmiş oldum.

using JqueryAjaxIslemleri.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace JqueryAjaxIslemleri.Controllers
{
    public class KursController : Controller
    {
        //
        // GET: /Kurs/

        public ActionResult Index()
        {
            SchoolContext db = new SchoolContext();
            var kurslar = db.Courses.ToList();
            return View(kurslar);
        }

        public JsonResult List(int? id)
        {
            SchoolContext db= new SchoolContext();
            IQueryable kurslar;
            if (id != null)
            {
                 kurslar = from k in db.Courses
                              where k.DepartmentID == id
                              select new
                              {
                                  k.CourseID,
                                  k.Title,
                                  k.Credits,
                                  k.DepartmentID
                              };
            }
            else
            {
                 kurslar = from k in db.Courses
                             select new
                             {
                                 k.CourseID,
                                 k.Title,
                                 k.Credits,
                                 k.DepartmentID
                             };

            }
            return Json(kurslar, JsonRequestBehavior.AllowGet);
        }

        public JsonResult DepartmentList(int? id)
        {
            SchoolContext db = new SchoolContext();
            IQueryable department;
            if (id != null)
            {
                department = from k in db.Departments
                                 where k.DepartmentID == id
                                 select new
                                 {
                                     k.DepartmentID,
                                     k.Name,
                                 };
            }
            else
            {
                department = from k in db.Departments
                                 select new
                                 {
                                     k.DepartmentID,
                                     k.Name,
                                 };

            }

            return Json(department, JsonRequestBehavior.AllowGet);
        }





    }
}

Daha sonra html tarafında yaptığımız java kodlarını yazalım..

@model IEnumerable<JqueryAjaxIslemleri.Models.Course>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

  <select id="DepartmentList"> </select>
  <select id="KurslarListe"> </select>
 

<script>
    $(function () {
    $.ajax({
        type: "post",
        url: "/Kurs/DepartmentList",
        data: "",
        datatype:"json",
        error: function (hata) {alert("Error Message");},
        success: function (Liste) {
            $("#DepartmentList").html(ListItemAdd(Liste));
        },
        complete: function (tamam) {  }

    });
    
    })
    $("#DepartmentList").change(function () {
        var Birim = { id: $(this).val(), name: $(this).val() };
        $.ajax({
            type: "Post",
            url: "/Kurs/List",
            //data: JSON.stringify(Birim),
            data: "id=" + $("#DepartmentList").val() ,
            dataType: "json",
            error:function () {alert("error message")    },
            //contentType: "application/json; charset=utf-8",
            success: function (response) {
                $("#KurslarListe").html(CourseAdd(response));
            },
            complete: function () {  }
        });
    });
    //$("#btnVeriGetir").click(function () {
    
    function ListItemAdd(IncommingList) {
        var items = "<option value=\"0\"> Please  select department..</option>";
        $.each(IncommingList, function (i, item) {
            items += "<option value=\"" + item.DepartmentID + "\">" + item.Name + "</option>";
        });
        return items;
    }


    function CourseAdd(IncommingList) {
        var items = "<option value=\"0\"> Please  select course...</option>";
        $.each(IncommingList,function(i,item)
        {
            items += "<option value=\"" + item.CourseID + "\">" + item.Title + "</option>";
    });
    return items;
    }
</script>

@section head{
    <script type="text/javascript" src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    }

Ben Layout şablon dosyasında head isimli section açtım ve jquery kütüphanelerini ekledim. Bizler bu işlemleri Html helper yontemlerini kullanarak veya takrar bunu düzenleyerek veya webapi kullanarak aynı işlemleri yapabiliriz. Son kısımdaki option stringlerini üreten kısımda Dont Repeat Code(kod tekrarını) engelemek için generic bir class veya web api yazılabilir.

Bir sonraki makalede görüşmek üzere hoşçakalın.

 

 

Update Trigger oluşturma

Merhaba Update trigger ekleme işlemi yapalım. Update trigerı yazarken bilginin önceki ve sonraki halini yakalayabiliriz., from deleted, inserted deyimleri ile.

aşağıdaki Update komutu çalıştığında Mesaj tablosuna ekleme yapan trigger yazalım..

UPDATE [ABCHastane].[dbo].[tblMuayene]
   SET [MuayeneTarihi] = '04.12.2018'

 WHERE MuayeneNo=1
GO

Triggerımızı yazalım..

USE [ABCHastane]
GO
CREATE TRIGGER [dbo].[MTarihiDegisti]
   ON  [dbo].[tblMuayene] 
   for UPDATE
AS 
BEGIN
DECLARE @ET datetime, @YT datetime, @HastaNo int, @Mesaj varchar(max)
select @ET= MuayeneTarihi from deleted
select @YT=MuayeneTarihi from inserted
select @HastaNo=HastaNo from inserted
set @Mesaj=' Sayın Hastamız ' + 
Convert(varchar(max),@ET,130) + ' tarihli muayene tarihiniz ' 	+
Convert(varchar(max),@YT,130)  + ' olarak değiştirilmiştir.'
insert into dbo.tblMesaj
  (HastaNo,EMTarihi,YMTarihi,Mesaj)
     VALUES
           (@HastaNo, @ET,@YT, @Mesaj)
END

Update komtu çalıştığımda mesaj tablosunda yapaılan ekleme kaydı görülecektir. Biz burda hem eski tarihi hem de yeni tarihi from deleted ve from inserted deyimleri yakalamış oldu. Burada , update işlemi yapılırken önce silme ve sonra ekleme işlemi yapıldığını unutmamak gerekir. Yazı ekimizde kulladığımız veri tabanı scripti bulunmaktadır.

 

hastane.sql (17,14 kb)

Parallel static sınıfı

z

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ParallelSamples
{
    class Program
    {
        static void Main(string[] args)
        {
            var tonbalam= new ConcurrentBag<int>();
            var listem = new List<int>();
            Parallel.For(1, 100, tonbalam.Add);
            Parallel.For(1, 100, listem.Add);
            Console.WriteLine("\r\ntonbalam------------");
            int cekilen;// bir sayı atanıp bu sayının çekilmesi denenebilir.
            if (tonbalam.TryTake(out cekilen))
            {
                Console.WriteLine(" çekilen Ve silinen sayı: {0}", cekilen);
            }
            int cekilen2;

            //ayrı iş parçaıkları ile çalıştığından bazen hata oluşabilir.
            if (tonbalam.TryPeek(out cekilen2))
            {
                Console.WriteLine(" çekilen  sayı: {0}", cekilen2);
            }

            foreach (int item in tonbalam)
            {
                Console.Write("{0}\t", item);
            }
            Console.WriteLine("\r\nlistem------------");
            foreach (int item in listem)
            {
                Console.Write("{0}\t", item);
            }



            //ikinci örnek, parametre olarak bir delege verilmiştir.
            Console.WriteLine("\r\n---------------");
            Parallel.For(1, 100,  x => { 
                Console.Write("{0}\t ", x+1);
            });


        }
    }
}

z

Ayrıntılı bilgiyi buradan inceleyebilirsiniz.

z

 

Web Matrix 3.0 duyuruldu.

Web Matrix 3 duyuruldu. Web matrix ucretsiz indirebilir, kurabilir, asp.net, php. node.js deneyimini yaşayabilirsiniz.

İndirme linkini  buradan erişebilrisiniz. Ayrıca GIT desteğide bulunmakta..

İlgili videoyu buradan , veya

 

MVC Json verisini Getirme

Bu yazımda jquery kullanarak json verisini yazdıracağım..

using System.Collections.Generic;
using System.Web.Mvc;

namespace Ana.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public JsonResult GetJsonData()
        {
            var elemanlar = new List<Person>
                {
                    new Person{Id = 1, FirstName = "Erkan", LastName = "Yürek", 
                        Addresses = new List<Address>
                                        {
                                            new Address{Line1 = "Erkan ın Ev adresi"},
                                            new Address{Line1 = "Erkan iş  Adresi"}
                                        }},
                    new Person{Id = 1, FirstName = "Cemil", LastName = "Polat", 
                        Addresses = new List<Address>
                                        {
                                            new Address{Line1 = "Cemil ın Ev adresi"},
                                            new Address{Line1 = "Cemil iş  Adresi"},
                                            new Address{Line1 = "Cemil ikinci  Adresi"}
                                        }},
                                                                                                        
                    new Person{Id = 2, FirstName = "Nisa", LastName = "Yürek", 
                        Addresses = new List<Address>
                                        {
                                            new Address{Line1 = "Nisanın Ev adresi"},
                                            new Address{Line1 = "Nisanın İş Adresi"}
                                        }}};

            return Json(elemanlar, JsonRequestBehavior.AllowGet);
        }
    }

    public class Person
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public List<Address> Addresses { get; set; }
    }

    public class Address
    {
        public string Line1 { get; set; }
        public string Line2 { get; set; }
    }
}

Şimdide client tarafında html kodu yazılım. Ben MVC projesi olarak hazırlamıştım. Section bölümleri Layout da tanımlanmış alanlardır.

@{
    ViewBag.Title = "Home Page";
}
@section featured {
<input id="btnGetir" type="button" value="Get Persons" />
<div>
    <div id="ajaxDiv">
    </div>
</div>

}
@section Scripts {
<script type="text/javascript">
    $(document).ready(function () {
        $('#btnGetir').click(function () {
            $.getJSON("/Home/GetJsonData", null, function (data) {
                var div = $('#ajaxDiv');
                div.html("<br/> " + "Persons received from server: " + "<br/>");
                $.each(data, function (i, item) {
                    div.append("<br/>" + "Ad: "+ item.FirstName+ ", Soyad: " + item.LastName);
                    $.each(item.Addresses, function (i, addres) {
                        div.append("<br/>" +"   " +(i+1) + ". adres: " + addres.Line1);
                    });
                });
            });
        });
    });

</script>
}

Bir sonraki makalemizde görüşmek üzere..

 

 

Json Dönüşümleri

Merhaba bu yazımda json dönüşümlerini anltacağım. Json bildiğimiz gibi JavaScript Object Notatin kelimelerin kısaltılmışı olan Nesle Yönelimli Javascript anlamına gelmektedir. Bir başka bir deyişle javascript uygulamarında web tabnlı uygulamalarda veri alışverişimde json tipleri kullanırız. Çünkü hızlı ve her teknolojiye uyumludur.Mesala boyle bir json çıkışı olabilir. 

{
   "tip": "kitap",
   "tur": "roman",
   "urunler": [
       {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
       {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
       {"ad": "Kavgam", "yazar": "Adolf Hitler"}
       ]
}

Bir örnek ile açıklayalım. JavaScriptSerialize nesnesi System.Web.Extensions assembly içindeki System.Web.Script.Serialization isim alanında bulunmaktadır. Buradan da msdndeki sample uygulamayı ulaşabilirsiniz.

 

static void Main(string[] args)
        {
            List<Calisan> Calisanlar = new List<Calisan>();
            new List<Calisan> 
            {
                new Calisan  { Name="Nisa", Surname="Yürek", Maas=5600M, UserName="nisa@gmail.com"},
                new Calisan  { Name="Dilek", Surname="Yürek",  Maas=1000M, UserName="nisanli@hotmail.com"},
                new Calisan  { Name="Mustafa", Surname="Yürek",  Maas=1000M, UserName="Mustafa@hotmail.com"}
            }.ForEach(t => Calisanlar.Add(t));

            JavaScriptSerializer js = new JavaScriptSerializer();
            string sonuc=js.Serialize(Calisanlar);
            System.Console.WriteLine(sonuc);

            //json dan ters dönüşüm yapalım... burda aşırı yüklenmiş olan generic bir yöntem olan deserialize kullanıyoruz.
            var insanDes = js.Deserialize<List<Calisan>>(sonuc);
            foreach (var item in insanDes)
            {
                System.Console.WriteLine("{0} {1} {2} {3}",item.Name,item.Surname,item.UserName,item.Maas);
            }

        }
    }

    class Calisan
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public string UserName { get; set; }
        public decimal Maas { get; set; }
    }

 

TSQL de View ile çalışma

x

x

 

USE [Chinook]
GO

CREATE VIEW [AbumlerArtistler]
AS
SELECT     Album.Title, Artist.Name
FROM         Album INNER JOIN
                      Artist ON dbo.Album.ArtistId = Artist.ArtistId
GO

View düzenlemek için

USE [Chinook]
GO

ALTER VIEW [AbumlerArtistler]
AS
SELECT     Album.AlbumId, Album.Title, Artist.Name
FROM         Album INNER JOIN
                      Artist ON dbo.Album.ArtistId = Artist.ArtistId
GO

x

x

 

Jquery ve ajax ornek kodlar

Jquery kutuphanesinde kullanılan ajax işlemlerinin gerçekleştirmek için kullanılan methodlar şunlardır.

  • ajax() - Load a remote page using an HTTP request. This is jQuery's low-level AJAX implementation.
  • load() - Load HTML from a remote file and inject it into the DOM.
  • get() - Load a remote page using an HTTP GET request.
  • getJSON() - Load JSON data using an HTTP GET request.
  • getScript() - Loads, and executes, a local JavaScript file using an HTTP GET request.
  • post() - Loads HTML by performing an HTTP post request.
@{
    ViewBag.Title = "Home Page";
}
@section featured {
    <section class="featured">
        <div class="content-wrapper">
            <p>
                @Html.TextBox("textBox1"," deneme", new  { id = "txtStartDate" , size="40"})
                @Html.Label("merhaba", new { id = "lbl" });
                <a href="#" > erkan
                </a>
            </p>
        </div> 
        <div id="toplam"><span id="topla">Saati öğrenmek için tıkla!</span></div> 
     
    </section>
}
@section Scripts {
    <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.0.js"></script>  
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.js"></script> 
    <script>
        $("#txtStartDate").datepicker();
        $("a").click(function () {
                alert("merhabalar");
        });
        $("#lbl").hover(function () {
            $("a").html("<span>html içeriği değişti.</span>");
        });
        function merhaba() {
            alert("merhaba de fonsiyonu çağrıldı");
        };
    </script>

}
İkinci örnek de Serverdan veri getireceğim.

<script>
        $(document).ready(go);

        function go() {
            $.get("@Url.Action("GetGreeting")",{
                    name: "Kemal"
                }, function (data) {
                    alert(data);
                }
                );
        };
    </script>


        public ActionResult GetGreeting(string name)
        {
            return Content("Hello " + name);
        }

x

x

x

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.