SQL Server 2008 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SQL Server 2008 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Cumartesi, Kasım 28, 2009

SQL Server 2008 R2 November CTP

SQL Server 2008 R2'nin November CTP'si (Community Technology Preview) çıktı. İlk bağlantı R2 için, ikinci bağlantı ise Feature Pack'i için... http://www.microsoft.com/downloads/details.aspx?FamilyID=fe0c6a31-5ad6-4eea-a865-73bbe2608bd1&displaylang=en http://www.microsoft.com/downloads/details.aspx?familyid=020EE0D5-BCE4-4A45-9D64-B0C49C8831E5&displaylang=en

Çarşamba, Ekim 14, 2009

SQL Server Reporting Services (SSRS) 2008 - Başlangıç

Kurumsal şirketlerde çalışan ya da finans departmanları ile çalışan yazılımcıların en sık yaptığı işlemlerden biri satış bilgilerini gösterecek rapor uygulamaları hazırlamak oluyor. Bu işlemleri ister bir web uygulaması hazırlayarak ister bir son kullanıcı bazlı masaüstü uygulama ister de excel üzerinde yayınlıyor olalım arka planda her zaman SQL Server içerisinde gelecek bir veri topluluğu oluyor. Bu durumda t-sql yardımı ile bir takım SQL cümlecikleri yazarak raporlama isteklerimizi karşılamaya çalıştık ve çalışmaya da devam edeceğiz. Bu işlemler için hazırlanan SQL cümlecikleri ile view, store procedure ya da düzenli olarak güncellenecek olan bir tablo hazırlanır ve veri gösterilecek ekranların bu yapılar üzerinde beslenmesine olanak tanınır. Günümüzde aktif olarak bilgi işlem departmanları olan şirketleri göz önüne alırsakta eğer ki ellerinde Sharepoint Services ya da MS CRM ve bunun gibi bir teknolojisi olmayan bir şirket ise düzenli olarak raporlarını odbc bağlantısı ile excel üzerinde göstermeye çalışırlar ki, kısa ve orta vadede istekleri karşılamakla birlikte bir süre sonra uygulama yetkinlikleri açısından eksikler yaşanmaya başlanıyor. Ne gibi aklınıza bir soru gelebilir ya da açıkladıktan sonra aa evet bizde böyle bir sorun ile karşılaştık diyebilirsiniz ki bu normal bir durumdur. Özellikle excel dosyalarında verileri gösteren kişilerin en temel anlamda yaşadığı iki sorun vardır. Birincisi satır ve sütun sayısı yetmeyebilir. İkincisi ise dosyalarının maksimum boyutları vardır ve biz bu boyutları aşıyoruzdur. Başlıca aklımıza gelen sorunlar bu şekildedir. Tabi sadece sorun değil basit yönleri de vardır. Özellikle excel içerisine alınmış olan veriler pivot tablolar ve bunun alt özellikleri yardımı ile oldukça esnek bir şekilde raporlarda hazırlanabilinmektedir. Herşey güzel verileri aldık, işledik, hesapladık ve son kullanıcıya farklı seçenekler ile sunduk. Ama bu işlemleri yaparken aklımızdan bir uygulama kaçıverdi ki bu Reporting Services 'in ta kendisidir. Özellikle SQL Server ile uygulama geliştiricilerine aklını yıllar yılı bu yaptığımız işlemleri daha kolay bir yol ile yapabileceğimiz bir işlem yok mudur acaba şeklinde sorular takıldı. Sonrasında ise Microsoft geliştiricileri Microsoft SQL Server Reporting Services  SSRS uygulamasını oluşturarak bizi bir çok işlemi kolayca yapabilmemize olanak tanır duruma getirmişlerdir. SQL Server 2000 uygulamalarına Add-on olarak eklenen Reporting Services, SQL Server 2005 ile birlikte SQL Server paketlerinin içerisine entegre olarak gelmekte ve bizlerin kullanımına sunulmaktadır.

Açıklamalardan da anlaşılacağı gibi bu yazımızda en temel anlamda bir rapor nasıl hazırlanır. Web sunucusu üzerinde bu raporu nasıl görüntüleyebiliriz gibi temel kavramlarını ele alarak SSRS 'e giriş yapacağız.

Repoting Services ile uygulama geliştirirken SQL Server ve t-sql 'ün gücünün yanı sıra geliştirme ortamında yer alan bileşenleri ile de başarılı bir yapıdır. Bunları kullanım sırasına göre sıralarsak birincisi sırada Reporting Services programlama kabiliyetleri yer alacaktır. Devamında ise sırası ile, dahili URL, SOAL ve WMI arayüzü yer almaktadır.

Reporting Services 'in mimari yapısını basit olarak diyagram üzerinde göstermek gerekirse karşımıza aşağıdaki gibi sonuç çıkacaktır.


Peki bu diyagramdan yararlanarak neler yapılabileceğinden kısaca bahsetmek gerekirse,

• Reporting Services ile hazırlanacak uygulamalara tek ya da farklı veri tabanları üzerinden veri kaynağı gösterilebilir.
• Reporting Services ile web arayüzü olan uygulamalar tasarlanıp bir yönetici paneli üzerinden gerekli işlemler yapılabilir.
• Reporting Services ile geliştirici araçları kullanılarak çok daha karmaşık raporların hazırlanabilmesi mümkündür.
• Reporting Services ile son kullanıcıların rahatlıkla çalışabilecekleri çok basit raporlamalar hazırlanabilir.
• Reporting Services ile raporlama sunucusu yardımı ile ister lokal bir bilgisayar isterde bir web sunucusu üzerinde yer alan bir bilgisayar üzerinden farklı veri kaynaklarından yararlanarak raporlar hazırlanabilir.

Bu gerekli bilgileri edindikten sonra artık yavaş yavaş SSRS uygulamalarını nasıl geliştirebileceğimize göz atmaya başlayabiliriz.

SSRS için geliştirme yapabilmek için ilk olarak adından da anlaşılacağı gibi Reporting Services uygulamasının bilgisayarınızca kurulu olması gerekmektedir. Bu uygulama SQL Server 2005-2008 paketlerinde kurulum esnasında opsiyon olarak gelmektedir. Kurulumdan sonra eğer ki Reporting Services ayarlarını düzenlemek isterseniz başlat menüsünden SQL Server 2008 (2005 te olabilir.)/ConfigurationTools/ReportingServicesConfigurationManager uygulamasından yararlanılır. İlk olarak çıkan ekranda Server ile ilgili bilgileri bizden istemekte, sonraısnda ise düzenleme ekranı karşımızdadır.



Karşımıza çıkan bu sayfa üzerinde hangi veritabanları ile çalışılabileceğini, web sunucunda hangi yol ile çalışılabileceğini, şifreleme kullanılabileceği ve diğer bir çok konuda ayar yapılabilmektedir.

Tabikii biz biraz daha işin yazılım geliştirme tarafında yer alıyoruz. Öyleyse bir geliştirme ortamına ve proje şablonuna ihtiyaç duyulmaktadır. Bu da bizlerin alışık olduğu Visual Studio ortamıdır. Tabii bu proje şablonun gelebilmesi için Sql Server kurulurken aynı isimli klasörün içerisinde yer alan SQL Server Business Intelligence Development Studio ortamınında kurulu olması proje şablonunun yer almasını sağlayacaktır.

Biz bu örneğimizi Visual Studio 2008 ortamı üzerinde yapıyor olacağız. Geliştirme ortamını açtıktan sonra yeni bir proje oluştur diyor ve karşımıza çıkan ekranda Business Intelligence seçeneğinden Report Server Project Wizard 'ı seçiyoruz. Bu seçenek yardımı ile adım adım rapor oluşturabileceğiz.


Not: İlerleyen zaman içerisinde diğer Report Server proje şablonlarınıda inceliyor olacağız.

Proje oluşturulduktan sonra adım adım projeyi oluşturma işlemine başlıyoruz. Veri sunucusunu seçilmesi istenen ekranda gerekli işlemin yapılabilmesi için edit seçeneğini tıkladıktan sonra sunucu adını, veri tabanı adını ve diğer istenen bilgileri girdikten sonra gerekli bilgiler ekrana eklenmiş olacaktır.



Bir sonraki ekranda veri tabanı tablolarında alınacak olan verilerin gösterilmesi için gerekli SQL cümlelerinin hazırlanması olacaktır. İsterseniz karşınızca çıkan ekrandan yararlanarak sorgularınızı yazabilmekle birlikte istersenizde QueryDesigner yardımı ile de kullanabilmeniz mümkündür.



Açılan ekran üzerinde yeni tablo ekle seçeneğini tıkladıktan sonra tabloyu seçiyor ve istediğimiz kolonların gözükmesine olanak tanıyoruz. Bir sonraki adımda tablonun nasıl bir tasarımda olacağı seçilir.



Bir sonraki adımda ise verilerin nasıl kullanılacağı gibi seçenekler yer almaktadır. Hangi veriler için sayfalama yapılacağı, neye göre gruplanacağı ve hangi verilerin detay kısmında yer alacağına ilişkin veriler yer almaktadır.



Verilerin ekranda hangi tablo yapısı ile görüntüleneceğini ve nerede yer alacağını belirledikten sonra en son adıma geçiyoruz.



Bu seçenekte verilerin alt toplamlarının olacak mı, nasıl bir stil ile olsun gibi seçenekleri belirterek devam edebiliriz. Karşımıza gelen en son ekranda raporun ismini belirliyoruz. Sonrsaında istersen işlemlerimizin sonucunda nasıl bir sonuca ulaşacağımızı görmek için ön görüntüleme seçeneğini seçerek sihirbaz yardımı ile ilk raporlama uygulamamızı hazırlamış oluyoruz.


Hazırlamış olduğumuz raporun ekran görüntüsü en temel anlamda yukarıda gördüğümüz gibi olacaktır. Uygulamayı çalıştırdığımız da ise yukarıda dizayn kısmında görmüş olduğumuz görüntü raporlama ekranında yer alacaktır. Bizler için asıl önemli olan bir web sayfası üzerinde nasıl görüntüleyecebileceğimizdir.

SSRS sistemimize kurulduğunda yerel sunucu içerisinde yer alan bir web sistemi yer almaktadır. Bu web sayfası yardımıyla Deploy edilmiş olan raporlama uygulamalarını görüntüleyebiliyoruz. Eğer ki bilgisayarınızda IIS aktif ise http://localhost/report sayfası yardımı ile bu ekranı görüntüleyebilirsiniz.

Şimdi hazırlamış olduğunuz rapor uygulamasını deploy ederek bu sayfa üzerinde görüntülenmesini sağlıyor ve sonrasında da web sayfasını açıyoruz.



Bu ekran yardımı ile hazırlanmış olan raporların görüntülenebilmesi mümkündür.

Bu yazımızda SSRS (SQL Server Reporting Services) ile rapor hazırlamak istediğimizde en temel anlamda neler yapmamız gerektiğini değinmeye çalıştık. Özellikle bir raporlama tool arayışı içinde olanlar ya da hazırlayanlar için kesinlikle incelenmesi gerekmektedir.

Herkese iyi çalışmalar diliyorum.

Umarım yararlı olabilmiştir.

Pazar, Ağustos 23, 2009

SQL Server 2008 Management Studio – Tablo Kolonlarında Değişiklik

SQL Server 2008 ile gelen Management Studio ile tablo oluşturduktan sonra bu tablolar üzerinde bir değişiklik yapılmak istendiğinde izin verilememesi gibi bir sorun ile karşılaşılabiliniyor. Hata mesajı olarakta yeniden tabloyu oluşturun şeklinde bir mesaj verilmektedir. Bu sorunu daha doğrusu uyarıyı kaldırmak için aşağıdaki işlemleri yapmak yeterli olacaktır.

Management Studio açıldıktan sonra Tool—>Options adımları sonrası karşınıza gelen özellikler ekranından aşağıdaki ekrana geliyorsunuz.

Untitled

Daha sonrasında table option bölümünde yer alan seçeneklerden Prevent saving changes that required table re-creation seçeneğinin yanında yer alan seçimi kaldırıyorsunuz.

Yapmış olduğunuz bu işlemler sonrasında artık oluşturmuş olduğunuz tablolarda sorunsuzca herhangi bir uyarı almadan (Primary veya Foreign key kullanılması durumunda alınan hatalar bu durumun dışında tutulmaktadır) işlemlerinizi sorunsuzca yapabilmeniz mümkündür.

Umarım yararlı olabilmiştir.

İyi Çalışmalar…

Perşembe, Haziran 18, 2009

Silverlight 2.0 – SQL İşlemleri için WCF ve Linq To SQL Kullanım

Silverlight uygulamları RIA yapısında oldukları için direk sql işlemleri ile çalışmak yerine bunları bir servis olarak oluşturup kullanmamız önerilmektedir. Bu sebepten ötürü veri tabanı işlemlerimizi yapmak için ister Linq Data Model oluşturduktan sonra WCF servisine querynin yapılacağı metota bağlyoruz. Sonrasında Silverlight projesine Web service referance olarak ekledikten sonra gerekli işlemleri yaparak istediğimiz data kontrollerine ekleyebilinmesi mümkündür.

Sırası ile yapılması aşağıdaki adımları uygularsanız sizin projenizde sorunsuz bir biçimde çalışacaktır.

  • Silverlight projesi oluşturuyoruz.
  • Oluşturulan web projesine Linq To SQL Data Model ekliyoruz.
  • Oluşturulan web projesine WCF Service ekliyoruz ve aşağıdaki kodları interface ve sınıfa ekliyoruz.

IService1.cs

using System.Collections.Generic;
using System.ServiceModel;

namespace SQLData.Web
{
    // NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in Web.config.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        List<Customer> GetCustomerGetByLastName(string lastName);
    }
}

Service1.cs

using System.Collections.Generic;
using System.Linq;

namespace SQLData.Web
{
    // NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in Web.config.
    public class Service1 : IService1
    {

        #region IService1 Members

        public List<Customer> GetCustomerGetByLastName(string lastName)
        {
            var ctx = new DataClasses1DataContext();
            var matchingCustomer = from cust in ctx.Customers
                                   where cust.LastName.StartsWith(lastName)
                                   select cust;
            return matchingCustomer.ToList();
        }

        #endregion
    }
}

  • Yukarıdaki işlemleri gerçekledikten sonra webconfigte ws service content özelliğini basic olarak değiştiriyoruz.
  • Uygulamayı derliyoruz.
  • Sİlverlight uygulaması üzerine ilk olarak Silverlight.Data.Control assembly ‘ını projeye ekliyoruz. Bu işlem silverlight uygulamasında DataGrid kontrolünü kullanabilmenize olanak tanıyacaktır.
  • Silverlight uygulamasına WCF service ini referans olarak ekliyoruz.
  • Sonrasında Page.xaml ve page.xaml.cs ‘e aşağıdaki kod bloklarını ekliyoruz

Page.xaml

<UserControl x:Class="SQLData.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
    Width="700" Height="300">
    <Grid x:Name="LayoutRoot" Background="White" ShowGridLines="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition />
            <RowDefinition Height="30" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>       
        <TextBlock Text="Lütfen Arayacağınız kişinin soyadını giriniz.." Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left"/>
        <TextBox x:Name="txtLastName" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" Width="150" Text="Lütfen arayın..."/>
        <my:DataGrid x:Name="grd" AlternatingRowBackground="Beige" AutoGenerateColumns="True" Width="700" Height="200" CanUserResizeColumns="True" Grid.Row="1"/>
        <Button x:Name="btnClick" Grid.Row="2" HorizontalAlignment="Center" Content="Ara"/>
    </Grid>
</UserControl>

Page.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;

namespace SQLData
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(Page_Loaded);
        }

        void Page_Loaded(object sender, RoutedEventArgs e)
        {
            btnClick.Click += new RoutedEventHandler(btnClick_Click);
        }

        void btnClick_Click(object sender, RoutedEventArgs e)
        {
            ServiceReference1.Service1Client webService = new SQLData.ServiceReference1.Service1Client();
            webService.GetCustomerGetByLastNameCompleted += new EventHandler<SQLData.ServiceReference1.GetCustomerGetByLastNameCompletedEventArgs>(webService_GetCustomerGetByLastNameCompleted);
            webService.GetCustomerGetByLastNameAsync(txtLastName.Text);
        }

        void webService_GetCustomerGetByLastNameCompleted(object sender, SQLData.ServiceReference1.GetCustomerGetByLastNameCompletedEventArgs e)
        {
            grd.ItemsSource = e.Result;
        }
    }
}

Yukarıdaki işlemleri adım adım yaptıktan sonra projemizi çalıştırdığımız da sorunsuzca uygulamamız çalışacaktır. Yaptığımız işlem ise soyadını girdiğimiz kullanıcıları DataGrid kontrolünde listelemektir.

Not: Linq To Sql Data Model de SQL Server 2008 veri tabanı örneklerinden AdventureWorks_LT veri tabanından Customer tablosunu kullandık.

Herkese mutlu günler diliyorum.

Cumartesi, Nisan 25, 2009

Asp.Net MVC Framework & Ado.Net Entity Framework – Veri Tabanı Uygulaması

Web uygulamalarının katmansal mimarisi olarak görülen Model View Controller yapısı 2008 yılının başlarında Microsoft tarafından MVC Framework olarak bizlere sunulacağı duyuruldu ve CTP sürümler ile nasıl kullanılacağı açıklanmaya çalışıldı. Bizlerde geçtiğimiz yıl içerisinde MVC Framework ile uygulama geliştirme nasıl olacak, hangi adımları izleyerek uygulama geliştireceğimizi anlatmaya çalıştık.

Bu yazıyı bir seri başlangıcı olarak düşünebiliriz. MVC ile ilgili “ne nasıl yapılır” diyerek yazılarımızı oluşturmaya çalışacağız. İlk yazımız olarakta Entity Framework kullanarak MVC Framework te bir veri tabanı uygulaması hazırlamak olacaktır.

Uygulamamızı Service Pack1 kurulu olan Visual Studio 2008 üzerinde geliştireceğiz. Ayrıca Ide ‘mizde MVC Framework 1.0 ‘ın da kurulu olması gerekmektedir. SP1 ‘ e olan ihtiyacımız ise Entity Framework ile tasarlayacak olduğumuz Entity Data Model ‘den kaynaklanmaktadır.

Eğer ki katmansal mimari kullanarak bir web uygulaması geliştiriyorsanız yazımızda yapacağımız örnek size çok daha aşina gelecektir. Çünkü bir Model katmanımız, Controller katmanımız ve View katmanımız olacaktır.

Yazımızda bir Film tablosu oluşturduktan sonra MVC Framework ile hazırladığımız web sayfalarında gösterme, ekleme ve düzenleme işlemlerini inceliyor olacağız. MVC Framework 'ü kullanarak uygulama nasıl oluşturulur diyerek artık örneğimize ve yazımıza başlayabiliriz.

Visual Studio 2008 ‘i açtıktan sonra File->New Project adımlarını izledikten sonra aşağıdaki ekrandan yararlanarak bir ASP.NET MVC Web Application oluşturuyoruz.



Oluşturma işlemini yap dediğimizde bize test projesi de oluşturayım mı diye soran bir ekran çıkacaktır. Biz test projesi istemiyoruz seçeneğini seçerek uygulamamıza devam ediyor olacağız.

Not: Visual Web Developers sürümünde bu ekran çıkmayacaktır.



Artık MVC uygulamamız oluşmuştur. Oluşturulan proje dosyalarını incelediğimizde bize Model, Controller ve View dosyalarının oluşturulmuş olduğunu, içeriğine de gerekli kod dosyaları ve aspx sayfalarının oluştuulduğunu görürüz. Proje dosyasında bizler biraz temizlik yapalım. Veri tabanını uygulamamıza ekledikten sonra tekrardan oluşturacağımız için;

• Controllers\HomeController.cs
• Views\Home


dosyalarını siliyoruz.

Veri tabanını oluşturuyoruz...

Örneğimizde kullanmak için bir veri tabanı oluşturmamız gerekmektedir. Bu işlemi sistemimizde kurulu olan SQL sürümüne göre değişik bir şekilde yapabilmemiz mümkündür. Bilgisayarlarında SQL Express kurulu olan arkadaşlar management studio kullanmadan direk Visual Studio üzerinden AddNewItem -> Data -> SQL DataBase adımlarını uygulayarak *.mdf uzantılı sql tabloları oluşturup üzerinde işlem yapabilmeleri mümkündür. Bir diğer adım ise SQL Server Management Studio üzerinden bir veri tabanı oluşturup onun üzerinde tablo oluşturduktan sonra visual studio üzerinde server explorer panelinden veri tabanını uygulamamıza göstererek kullanmaktadır. Biz bu seçeneklerden ikincisi üzerinde uygulamamızı geliştiriyor olacağız.

SQL Server Management Studio ‘yu açarak Sirket isimli veri tabanımızı oluşturuyoruz. Daha sonra sirket veri tabanımızın içerisine Film isimli tablomuzu aşağıdaki elemanlar ile oluşturuyoruz.



Tablomuzu ve kolonlarımızı oluşturduktan sonra Id alanını otomatik artan özelliğini atamamız gerekmektedir. Bunun için özellikler bölümünden Identity Column ‘a Id alanını veriyoruz.



Artık veri tabanımızı ve tablomuzu oluşturmuş bulunuyor. Şimdi biraz Film tablomuza daha sonraki işlemlerimizde kullanmak üzere bir kaç veri girelim.



Entity Framework ile Model Oluşturuyoruz...

Veri tabanı üzerindeki işlemlerimizi MVC uygulamamızda kullanabilmemiz veri tabanı modelini oluşturmamız gerekmektedir. Bu işlemi de Entity Data Model üzerinden yapıyor olacağız. İlk olarak oluşturmuş olduğumuz veri tabanını server explorer üzerinden visual studio ‘da kullanabilir duruma getiriyoruz.

Server Explorer üzerinde veri tabanı Connect to Database seçeneğine tıkladıktan sonra karşımıza gelen ekranda Microsoft SQL Server ‘ı seçiyoruz ve bağlantımızı ekleyeceğimiz ekrana geliyoruz. Gerekli parametreleri ekleyip veri tabanı bağlantımızı test ettikten sonra ekleme işlemini tamamlıyoruz. Eğer bu işlemi başarılı bir şekilde tamamladıysak karşımıza aşağıdaki gibi görünüm oluşacaktır.



Kullanılabilir bir veri tabanımız oluştuğuna göre model katmanımızı oluşturabiliriz. Model katman, OR/M, Nhibernate gibi toollarda çok sık bir şekilde kullanılır. MVC Framework ‘te OR/M toollarda olduğu gibi Model katmanı kullanmamazı istemektedir. Biz de bu katmanı ADO.NET Entity Framework ‘ü kullanarak oluşturacağız.

Model klasörünün üzerinde faremiz ile sağ tıklama yaparak Add -> NewItem -> Data -> ADO.NET Entity Data Model ‘i seçiyoruz.



Karşımıza geçen ekranlar sırasıyla;

1. Generate From Database
2. Choose Your Data Connection ekranında veri tabanını seçiyoruz.
3. Choose Your Database Object ekranında table seçeneğinde kullanacak olduğumuz Film veri tabanını seçerek işlememizi tamamlıyoruz.

İşlemlerimiz sonucunda Models klasörünün altında FilmDbModel.edmx dosyamız oluşmuş ve mapping browser ekranımız aşağıdaki resimde gördüğümüz şekilde oluşturulmuştur. Burada Column Mapping bölümünde veri tabanı kolonlarına karşılık gelen deger/özellikler ekranı oluşturulmuş ve kullanımıza sunulmuştur. Film tablomuza göre oluşturulmuş kolon mappingi değerleri aşağıdaki gibidir;

Id -> Id:Int32
Film_Adi -> Film_Adi:String
Yonetmen -> Yonetmen:String
Cikis_Tarihi -> Cikis_Tarihi:DateTime



Sınıfımızın adı ile veri tabanımızın adının çakışmaması için ismini Filmler olarak değiştiriyoruz. Başka bir zaman veri tabanı üzerinden direk işlem yapmaya kalkıştığımızda vermiş olduğumuz isimlerin çakışmaması için böyle bir değişiklik yaptık.

ASP.NET MVC Controller Oluşturuyoruz...

Projemizi ilk oluşturduğumuzda Controller klasörümüzün içerisindeki HomeController.cs kod dosyamızı silmiştik. Şimdi tekrardan bu sınıfımızı oluşturacağız. Uygulamamızın Solution Explorer ‘da Controllers klasörünün üzerinde Add->Controller... adımlarını izleyerek yeni bir controller sınıfı ekliyoruz.



Ekleyecek olduğumuz controller sınıfına silmiş olduğumuz HomeController adını veriyoruz, Create, Update ve Detail seçeneği seçili olacak şekilde işlemimizi tamamlıyoruz.



Eklediğimiz sınıfın kod içeriği varsayılan olarak aşağıdaki gibi olacaktır.

Controllers\HomeController.cs

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


namespace FilmUygulama.Controllers
{
   public class HomeController : Controller
   {
      //
      // GET: /Home/

      public ActionResult Index()
      {
         return View();
      }

      //
      // GET: /Home/Details/5

      public ActionResult Details(int id)
      {
         return View();
      }

      //
      // GET: /Home/Create

      public ActionResult Create()
      {
         return View();
      }

      //
      // POST: /Home/Create

      [AcceptVerbs(HttpVerbs.Post)]
      public ActionResult Create(FormCollection collection)
      {
         try
         {
            // TODO: Add insert logic here

            return RedirectToAction("Index");
         }
         catch
         {
            return View();
         }
      }

      //
      // GET: /Home/Edit/5

      public ActionResult Edit(int id)
      {
         return View();
      }

      //
      // POST: /Home/Edit/5

      [AcceptVerbs(HttpVerbs.Post)]
      public ActionResult Edit(int id, FormCollection collection)
      {
         try
         {
            // TODO: Add update logic here

            return RedirectToAction("Index");
         }
         catch
         {
            return View();
         }
      }
  }
}

Veri Tabanındaki Kayıtları Nasıl Listeleriz ?

HomeController sınıfında Index() metodu kayıtların listelenmesi için varsayılan metod olarak kabul edilmiştir. Index Controller ‘da ilk olarak çağırılacak metod olarak MVC ‘de karşımıza çıkmaktadır.

Index() metodunu veri tabanındaki Film tablosunda yer alan kayıtları göstermek için kullanacağız. Bu işlem için ilk yapmamız gereken Model katmanımızda map ettiğimiz Film tablosunu index metodunda kullanılacak bir şekilde düzenlemek olacaktır.

İsim alanı olarak FilmUygulama.Models ‘i ekledikten sonra index() metodunun üzerine model entity ‘i kod parçasını ekliyoruz.

private SirketEntities _db = new SirketEntities();

Sonrasında da return Index ‘e _db.FilmlerSet.ToList() anlatımını (expression) ekliyoruz. Düzenlemelerimiz sonucunda Index metodumuzun aşağıdaki şekilde olmuştur.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using FilmUygulama.Models;

namespace FilmUygulama.Controllers
{
    public class HomeController : Controller
    {
       //
       // GET: /Home/
       private SirketEntities _db = new SirketEntities();

       public ActionResult Index()
       {
          return View(_db.FilmlerSet.ToList());
       }
    }
}

Şimdi Index() metodunu kullanan bir View sayfa yapmamız gerekmektedir. Eskiden ve MVC kullanılmayan uygulamalarda hala bu işlemi yeni bir web sayfası oluşturur. Bi masterpage ‘e bağlayıp, sonrasında da veri tabanından çektiğimiz alanları sayfamızda kullandığımız server kontrollerine bağlayarak işlemlerimizi tamamlıyorduk. MVC Framework ile sonucu yine aynı olmasına karşı yapılış yöntemi biraz farklı ve basit. J

Biraz önce düzenlemiş olduğumuz index() metodumuzun üzerine faremiz ile sağ tıklama yapıyoruz.



Sonrasında karşımıza çıkan ekranda View Name ‘i index ve type ‘i de model katmanından alacağını belirterek işlemimizi tamamlıyoruz.



İşlemimiz sonucunda View klasörünün içerisine Home klasörü ve içerisinde index.aspx sayfamız oluşmuştur.

Views\Home\index.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<FilmUygulama.Models.Filmler>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
   Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<table>
   <tr>
      <th></th>
      <th>
         Id
      </th>
      <th>
         Film_Adi
      </th>
      <th>
         Yonetmen
      </th>
      <th>
         Cikis_Tarihi
      </th>
   </tr>

<% foreach (var item in Model) { %>

   <tr>
      <td>
         <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
         <%= Html.ActionLink("Details", "Details", new { id=item.Id })%>
      </td>
      <td>
         <%= Html.Encode(item.Id) %>
      </td>
      <td>
         <%= Html.Encode(item.Film_Adi) %>
      </td>
      <td>
         <%= Html.Encode(item.Yonetmen) %>
      </td>
      <td>
         <%= Html.Encode(String.Format("{0:g}", item.Cikis_Tarihi)) %>
      </td>
   </tr>

<% } %>

</table>

<p>
   <%= Html.ActionLink("Create New", "Create") %>
</p>

</asp:Content>

Oluşmuş olan sayfamızı incelediğimizde bizim için bir tablo görünümde veriler oluşturulmuş. Sonrasında ise model nesnesinin içerisindeki verilerde foreach döngüsü ile dönülerek bütün kayıtlar bizlere sunulmuştur.



Yeni bir kayıt oluşturuyoruz...

Index metodunda yapmış olduğumuz düzenlemeler ile Film tablosuna elle girmiş olduğumuz verileri sorunsuzca getirdik. Şimdi ise veri tabanına yeni bir kayıt eklemek istersek nasıl yapacağımızı incelemeyeceğiz.

Yeni bir kayıt işlemini parametresiz Create() metodu ile Create() metodunu aşırı yüklenmiş ve server post yolu ile haberleşen Create() metodu ile gerçekleştiriyoruz.

Aşırı yüklenmiş olan Create() metodu içersine form üzerinde kullanıcılar tarafında girilmiş olan değerleri alarak veri tabanına kayıt yapmaktadır.

Create() metodunu düzenleyerek kayıt yapar hale getirelim.

Create metodunu özelleştirme ilk başta kullanıcı tarafından girilmemesi gereken alanları çıkarmakla başlayalım. Bu işlemi yapmanın en basit yolu Bind edilecek olan alanlardan istediklerimizi çıkarmak olacaktır.

public ActionResult Create([Bind(Exclude=”Id”)] Filmler filmlerToCreate)

kod bloğunu kullanmamız durumunda artık Id yeni bir kayıt oluşturma esnasında kullanıcıya değer girmesi için gösterilmeyecektir.

ModelState form üzerinden verileri bind yolu ile iki yönlü kontrolünü yapar. Bizde ilk olarak isteğin ModelState ‘ten gelip gelmediğini kontrol edeceğiz.



Kontrollerimizi tamamladıktan sonra artık yeni bir kayıt işlemini yapabilecek durumu gelmiş bulunuyoruz. Yapmamız gereken, kod bloğumuzda kullanmış olduğumuz _db sınıfının içerisinde yer alan AddToFilmlerSet() metodunu kullanarak parametre olarak form üzerindeki değerleri toplamış olarak filmlerToCreate kolleksiyonunu vermemiz sonrasında da SaveChanges() metodu ile kayıt işlemimizin tamamlandığını belirtmemiz yeterli olacaktır.

Yapmış olduğumuz düzenlemeler sonucunda Create metodlarımız aşağıdaki gibi olmuştur.

//
// GET: /Home/Create

public ActionResult Create()
{
   return View();
}

//
// POST: /Home/Create

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="Id")] Filmler filmlerToCreate)
{
   if (!ModelState.IsValid)
      return Create();
   try
   {
      _db.AddToFilmlerSet(filmlerToCreate);
      _db.SaveChanges();

       return RedirectToAction("index");
   }
   catch
    { return View(); }
}
Visual Studio yardımı ile basitçe Create web sayfamızı oluşturuyoruz. Yapmamız gerek index sayfasında olduğu gibi metodumuzun üzerinde sağ tıklama ile AddView seçeneğine tıklıyoruz. Sonrasında karşımıza çıkan ekranda içerik kısmında Create ‘i type tarafında da filmleri seçerek işlemimizi tamamlıyoruz.



View\Home\Create.aspx
s<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<FilmUygulama.Models.Filmler>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
   Create
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

   <h2>Create</h2>

   <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>

   <% using (Html.BeginForm()) {%>

   <fieldset>
      <legend>Fields</legend>
      <p>
         <label for="Id">Id:</label>
         <%= Html.TextBox("Id") %>
         <%= Html.ValidationMessage("Id", "*") %>
      </p>
      <p>
         <label for="Film_Adi">Film_Adi:</label>
         <%= Html.TextBox("Film_Adi") %>
         <%= Html.ValidationMessage("Film_Adi", "*") %>
      </p>
      <p>
         <label for="Yonetmen">Yonetmen:</label>
         <%= Html.TextBox("Yonetmen") %>
         <%= Html.ValidationMessage("Yonetmen", "*") %>
      </p>
      <p>
         <label for="Cikis_Tarihi">Cikis_Tarihi:</label>
         <%= Html.TextBox("Cikis_Tarihi") %>
         <%= Html.ValidationMessage("Cikis_Tarihi", "*") %>
     </p>
     <p>
        <input type="submit" value="Create" />
     </p>
   </fieldset>

   <% } %>

   <div>
      <%=Html.ActionLink("Back to List", "Index") %>
   </div>

</asp:Content>



Film tablosunda boş geçilemez olarak tanımladığımız alanlar web sayfamıza da o şekilde aktarılmıştır. Ek olarak ID alanına dikkatinizi çekmek istiyorum. Hem aspx kod tarafında hem de ekran göreceğiniz üzere ID alanı gelmiştir. Fakat hatırlayacağınız üzere biz Create metodunda bu alanın bind edilmemesini istemiştik. Bu ID alanını görünmez kılmaz sadece kullanılmaz kılar. Yani biz ID ‘ye hangi değeri girersek girelim o tabloyu oluştururken tanımladığımız gibi otomatik artan bir sayı olarak değerlerini almaya devam edecektir. Yani ID alanını sayfamızdan çıkarttığımız durumda da işleyişimiz sorunsuz bir biçimde devam edecektir.

Değerlerimizi doğru bir biçimde girip kaydı oluştur dediğimizde sorunsuzca kaydımız gerçekleşecek ve index sayfamızda gözükecektir.

Kayıt düzenleme işlemini yapıyoruz...

Yazımız boyunca kayıtları listeleme ve yeni kayıt ekleme işlemlerini ne kadar kolay bir şekilde yapabildiğimize göz attık. Son olarak Düzenleme (Edit) işlemini nasıl yaptığımıza bakarak bu yazımızı sonlandıracağız.

Diğer işlemlerimizi yaparken Index() ve Create() metodlarını kullanmıştık. Düzenleme işlemi için ise HomeController.cs sınıfının içerisinde yer alan Edit() metodlarını kullanıyor olacağız. Edit ‘te Create ‘te olduğu gibi iki metoddan oluşmaktadır. Birincisi Id ‘den yararlanarak düzenlenecek olan kayıda ilişkin verileri form kontrollerine bind eder. İkincisi ise form kontrollerine bind edilmiş olan veriler üzerinde yapılmış olan değişiklikleri günceller.

İsterseniz bu sefer ilk olarak View klasörümüzün altında yer alacak olan Edit sayfamızı oluşturup ondan sonra metodlarımız içerisindeki gerekli düzenlemeleri yapalım.

Edit sayfamızı oluşturmak için metodumuzun üzerinde faremiz ile sağ tıklama sonrasında AddView seçeneğine tıkladıktan sonra karşımıza gelen ekranda ListContent tarafında Edit ‘i seçerek sayfamızı oluşturuyoruz.



Sayfamız oluşmuş durumda. Şimdi de Edit metodlarında düzenlemelerimizi yapıyoruz.

//
// GET: /Home/Edit/5

public ActionResult Edit(int id)
{
    var filmlerToEdit = (from m in _db.FilmlerSet
            where m.Id == id
            select m).First();
   return View(filmlerToEdit);
}

//
// POST: /Home/Edit/5

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Filmler filmlerToEdit)
{
   if (!ModelState.IsValid)
   return View();
   try
   {
      // TODO: Add update logic here
      var orjinalFilm = (from m in _db.FilmlerSet
               where m.Id == filmlerToEdit.Id
               select m).First();
       _db.ApplyPropertyChanges(orjinalFilm.EntityKey.EntitySetName, filmlerToEdit);
       _db.SaveChanges();

      return RedirectToAction("Index");
    }
    catch
    { return View(); }
}

Post edilmemiş edit metodunda Id ‘den yararlanılarak veriler getirilirken Post edilecek olan edit metodundan ID ile getirilmiş değerlerdeki verilerin güncelleme işlemi yapılmıştır.



Kaydet dediğimizde değişiklik işlemi tamamlanmış olacaktır.

Bir yazımızın sonuna daha geldik. MVC ile nasıl web sitesi oluşturulduğunu, veri tabanında oluşturmuş olduğumuz bir tabloyu Entity Framework ile nasıl kullanabileceğimizi ve bunu nasıl MVC Framework kullanılarak hazırlanmış bir web sitesinde kullanabileceğimizi, oluşturmuş olduğumuz model katmanı üzerinden select, create ve update işlemlerini nasıl yapacağımızı adım adım incelemeye çalıştık.

Diğer MVC yazılarımızda, bu yazımızda değinmiş olduğumuz controller, routing ve diğer bir çok konuyu açıklayarak devam ediyor olacağız.

Herkese mutlu ve başarılı bir gün diliyorum.

Pazartesi, Nisan 13, 2009

SQL Server 2008 Service Pack 1

sql-server-2008-logo

 

SQL Server 2008'in hem 32 bit hem de 64 bit sürümleri için Service Pack 1 yayınlandı. 10.00.2531.00 version numarası ile yayınlanan paketi bu linkten indirebilirsiniz.

Salı, Mart 24, 2009

YazGeliştir Seminerleri @İstanbul - Yıldız Teknik Üniversitesi

Merhabalar,

Benim konuşmacıları arasında olduğum Yazgelistir ekibi 28 Mart Cumartesi günü Yıldız Teknik Üniversitesinde olacağız. Benim anlatacağım konu Windows Presentation Foundation. Etkinlik ile ilgili duyuruyu yazının devamında okuyabilirsiniz. Katılımlarınızı büyük bir merak ve heyacanla bekliyoruz…

Duyuru;

Yazgeliştir, 2009 seminer turuna Yıldız Teknik Üniversitesi'nden devam ediyor. 28 Mart 2009 Cumartesi günü tüm gün sürecek olan, altı konuşmacının yedi ayrı konuyu anlatacağı seminerlerde sizde yerinizi alın!
Etkinlik Tarihi: 28 Mart 2009 Cumartesi

Etkinlik Programı:

09:30-10:15:    Mustafa Acungil - İş zekası nedir?
10:15-10:30:    ARA
10:30-11:15:    Mustafa Acungil - SQL Server 2008 İle Gelen Yeni Veri Tipleri
11:15-11:30:    ARA
11:30-12:15:    Volkan Korkmaz - Dynamics CRM 4.0
12:15-13:00:    YEMEK ARASI
13:00-13:45:    Turhal Temizer - Windows Presentation Foundation
13:45-14:00:    ARA
14:00-14:45:    Burak Batur - Microsoft Office SharePoint Server 2007
14:45-15:00:    ARA
15:00-15:45:    Daron Yöndem - MultiPoint Programlama
15:45-16:00:    ARA
16:00-16:45:    Emre Coşkun - Composite WPF

Etkinlik Yeri :
Yıldız Teknik Üniversitesi Beşiktaş Kampüsü, YTÜ C Blok Konferans Salonu

Pazar, Ocak 11, 2009

Avukatpro Yeni Nesil Ekran Görüntüleri

Proje yöneticisi olarak yer aldığım projemizin ekran görüntüleri internette bir süredir sunulmaktadır. Ben de gururla sizlere bu görüntüleri sunmak istiyorum.

Sunum Flash ve Silverlight ile hazırlandı. Tercihinize göre istediğiniz platformda izleyebilirsiniz. Benim tavsiyem Silverlight üzerinden izlemenizdir tabii ki :)

yeniNesil

Avukatpro Yeni Nesil Ekran Görüntülerine link yardımı ile erişebilirsiniz…

Şirketlerinin hukuk departmanları veya avukatlara tavsiye edip almak isterseniz aşağıdaki iletişim bilgilerinden benimle temasa geçebilirsiniz. Bu sayede bende sizi satış temsilcilerimize yönlendirebilirim.

Turhal Temizer
Proje Yöneticisi & Danışman
e-mail: turhal.temizer@avukatpro.com

Salı, Eylül 02, 2008

SQL Server 2008

Şuanda üzerinde çalışmakta olduğumuz proje sebebiyle SQL Server 2008 Enterprise sürümü veritabanı işlemlerini gerçekleştireceğiz. Bu kapsamla bu uygulamayı kurmam gerekti. Bir önceki sürümüne oranla kurulumu daha basit ve anlaşılır. Ayrıca da bellek/performans faktörlerini düşünürsek bir önceki sürümüne göre çok daha optime ve hızlı olduğunu görebiliriz. İlerleyen zamanlarda sql server 2008 ile ilgili yenilikleri(benim gözüme çarpan) sizlerle paylaşmaya çalışacağım. Alt tarafta sizler için SQL Server 'in olmazsa olmazlarından Management Studio 'unun başlangıç ekranını sunuyorum.

sql server 2008enterprise

Umarım kullanım olanağınız olur...