VERİ TABANI KULLANIMI

Benzer belgeler
12 Ocak 2012 / Perşembe

"SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz.

Android Ders Notları

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

JasperReports Server ve Ireport raporlama Sistemi Kurulumu / Kullanımı 1. Bölüm 2. Bölüm 1- JasperReports Server ve Ireport Nedir?

SQL ALWAYS ON SİSTEMİNE YENİ CLUSTER NODE EKLENMESİ

vsphere Client(viClient) ile ESXI Kontrolü

NOT: VERİTABANINDAKİ TABLOLARI OLUŞTURMAYI DA UNUTMAYACAĞIZ.

Exchange Server 2010 Sertifika Oluşturma

e-imzatr Kurulum Klavuzu

Outlook Web Access'a Güvensiz Girmeyin

Önce Access açıp,masaüstü ne, vt.mdb adlı veri tabanı dosyasını oluşturuyoruz. Kayıt türünü seçiyoruz

1) Visual Studio da WebSiteemlakci adında yeni bir site oluşturuyoruz.

Subnet A da bulunan DHCP Server makinesinin ve client makinenin IP yapılandırması aşağıdaki gibidir.

BEUN VPN Hizmeti. VPN Nedir?

VMware Üzerine BackTrack 5 Kurulumu

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

e-imzatr Kurulum Klavuzu

TÜRKİYE KAMU HASTANELERİ KURUMU WEB SİTESİ YÖNETİM REHBERİ

SQL SERVER 2005 ENTEGRE SQL (VTY) VERİ TABANI YÖNETİM KURULUMU RESİMLİ ANLATIMI. Entegre SQL kurmadan önce SQLSERVER 2005,i kuralım öncelikle.

Mac OS İşletim Sisteminde MetaTrader4 Kurulumu

WAMP SERVER KURULUMU

Resim 1. Access açılış sayfası. Resim 2. Access veri tabanı düzenleme sayfası

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

EBA Dosya Uygulaması Kullanıcı Kılavuzu ( W eb)

AirTies Kablosuz Erişim Noktası (Access Point) olarak kullanacağınız cihazı bilgisayarınıza bağlayarak ayarlarını yapabilirsiniz.

Automatically Upgrade (new) Client push installation Software update point installation Group Policy installation Logon script installation

Microsoft Outlook 2003 Kurulumu

DetailsView. DetailsView kontrolünün GridView kontrolüyle paralel şekilde kullanımı ile ilgili örnek

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

IIS 7.5 ÜZERİNDE FTP SİTE KURULUMU VE YAPILANDIRILMASI

AirTies Kablosuz Erişim Noktası (Access Point) olarak kullanacağınız cihazı bilgisayarınıza bağlayarak ayarlarını yapabilirsiniz.

VERİ TABANI NEDİR A. TABLO OLUŞTURMA

PlayOnMac Dowload System Preference Security&Privacy clickthelocktomakechnages (değişiklik yapmak için kilidi tıklayın) Allow apps downloaded from:

WEB E-POSTA AYARLARI. Outlook 2003 Ayarı ( Resimli Anlatım )

AdverTech Dijital Tabela Yönetim Yazılımı Kullanım Klavuzu

INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK

ADO.NET VERİTABANINA BAĞLANTI. Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA 1

İnternet Programcılığı

WOLVOX Veri Transfer. AKINSOFT WOLVOX Veri Transfer Yardım Dosyası. Doküman Versiyon :

3-

XILINX ISE WEBPACK 14.7 UYGULAMA TUTORIAL

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

BLGM 354 DENEY 1 * GİRİŞ

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

Windows Live ID ve parolanızı giriniz.

XILINX ISE WEBPACK 14.7 UYGULAMA TUTORIAL

1. VERİ TABANI ARAÇLARI

Oluşturmak istediğimiz OU ye bir isim veriyoruz. Name kısmına ISTANBUL yazıyoruz,

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

adresine tıklayarak kayıt ekranına giriş yapınız.

Kurulum Dökümanı. v

MATLAB KURULUM KILAVUZU

P-TECH RF MODEM MODBUS SERİ HABERLEŞME KILAVUZU

3)Raporlar ile hem güncelleme durumlarını hem de özet bilgilere sahip oluruz.

Flow Kullanım Klavuzu Mart 2014

Veri Tabanı Yönetim Sistemleri Bölüm - 02

SQL Server 2014 Kurulum Adımları

HSancak Nesne Tabanlı Programlama I Ders Notları

KANTAR UYGULAMASI Kurulum Kılavuzu

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

P-TECH RF MODEM İLE MODBUS TCP HABERLEŞME

Lanschool Sınıf yönetim yazılımının (V7.4) Ncomputing sistemlerinde kullanılması

Security Configuration Wizard ile güvenliği artırmak

SQL Server 2008 kurulum için Microsoft Windows Installer 4.5 ve üzeri bileşenin bilgisayarınızda kurulu olması gerekir. İndirmek için tıklayın

Nevşehir Hacı Bektaş Veli Üniversitesi. Moodle Uzaktan Eğitim Sistemi. Öğretim Elemanı Bilgilendirme Kılavuzu

IceWarp kurulumu. IceWarp Server kurmanız için yapmamız gereken adımlar şunlardır:

ADO.NET. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

FTP Programı File Zilla nın Kurulumu & Çalıştırılması

EKLEME SORGUSU. 2) ornekveritabani.accdb isimli veritabanınızı çift tıklayarak açınız. Sorarsa, İçeriği Etkinleştir komutunu uygulayınız.

ASP.NET ile Bir Web Sitesi Oluşturma

Windows Server 2012 Kurulum Hazırlıkları. Windows Server 2012 Kurulum Seçenekleri. Windows Server 2012 Kurulum Adımları. Full GUI Kurulum Seçeneği

Vega Web Sipariş Kurulum



Uygulama web, ios ve Android platformlarında sorunsuz bir şekilde çalışmaktadır.

e-imzatr Kurulum Klavuzu

Başlangıç Ayarları.

ACCESS DERS Tablolarda Düzenleme

VERİ TABANI YÖNETİM SİSTEMLERİ-II

MOBİL UYGULAMA GELİŞTİRME

WDS İle Windows XP Pro Image Alma Ve Yükleme Ilbey Ismail UNVER - MCP

Yeni kullanıcı hesabı açmak ya da varolan hesaplar üzerinde düzenlemeler yapmak.

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Opera V2 Kurulum Klavuzu V0.01

MIRACLE DATA WORKS KURULUM DOKÜMANI

Useroam Kurulum Rehberi

Kurulum Dökümanı * v * Bu döküman FortiLogger versiyonu için hazırlanmıştır.

Wolvox Kapı Ekranı. AKINSOFT Wolvox Kapı Ekranı Yardım Dosyası. Doküman Versiyon :

Argedc Server 2012 std. ArgeSql Server 2012 std. Sccm Server 2012 std

Ortamınızda A.D. veya LDAP sistemi var ise aşağıdaki linkten KoruMail LDAP-AD isimli dokümanı inceleyebilirsiniz.

Asp.Net Veritabanı İşlemleri

SGK Otomasyon Tanıtım ve Kullanım Kılavuzu

Transkript:

Bölüm 11 VERİ TABANI KULLANIMI SQL VERİ TABANI OLUŞTURMA Daha önce raspberry pi ile yaptığımız kart okuma uygulamasında herhangi bir veri tabanı kullanmadık. Veri tabanı olarak Access, Excell, SQLite gibi lokal veri tabanları kullanabileceğiniz gibi MySQL, MSSQL gibi web tabanlı veri tabanlarını da kullanabilirsiniz. Yapacağımız uygulamada azure ortamında saklanacak bulut tabanlı mssql veri tabanını kullanacağız. Bunun için öncelikle https://www.microsoft.com/en-us/sql-server/sql-serverdownloads linkinden SQL Server 2016 Express Sürümünü indiriyoruz. Kurulum paketini açıp Basic seçeneğini seçerek kurulum işlemini başlatıyoruz.

Kurulum işleminin bitmesinin ardından son ekranda Install SSMS butonuna tıklayarak SQL Server Management Studio yazılımını indiriyoruz. Açılan sayfada download seçeneğine tıklayıp indirme işlemini başlatıyoruz.

Yüklediğimiz SQL SERVER Management Studio yazılımını çalıştırıyoruz. Server name kısmına lokalde çalıştığımız için. Yazıyoruz. Authentication kısmında ise Windows doğrulama seçeneğini seçiyoruz.

Database üzerine sağ tıklayıp New Database seçeneğini seçiyoruz. Database name bölümüne veri tabanı ismini (örneğimizde DigiClass) yazarak OK butonunu tıklıyoruz.

Veri tabanını oluşturduktan sonra yeni bir tablo oluşturmak için oluşturduğumuz veri tabanı adının yanında bulunan + simgesine tıklayıp Tables seçeneği üzerine sağ tıklama yaparak New -> Table seçeneğini işaretliyoruz. Sol üst tarafa tablo adımızı yazarak gerekli alanları oluşturuyoruz. Alan adlarından id adlı kolonu Set Primary Key olarak belirliyoruz. Set Primary Key i her kaydın benzersiz kimlik numarası şeklinde açıklayabiliriz. Kayıtlara bu kimlik numarası yardımıyla erişmeyi sağlarken, kayıtların da tekrarlanmasını engeller. Belirlediğimiz Set Primary Key kolonu seçili haldeyken alt tarafta Özellikler bölümünde Is Identity özelliğini Yes yapıyoruz. Bu özellik ile belirtilen alandaki değerin benzersiz olmasını sağlıyoruz.

Yaptığımız değişikleri görmek için alanları oluşturup kaydet butonuna bastıktan sonra, veri tabanı üzerine sağ tıklayıp Refresh menüsünü tıklıyoruz. Diğer tabloları ve tablolar içerisindeki alanları da aynı şekilde tanımlayabiliriz. ENTITY FRAMEWORK SQL SERVER BAĞLANTISI Bu bölümde daha önce SQL Server tarafında oluşturduğumuz veri tabanına bağlanıp, veri ekleme, veri çekme, veri güncelleme ve veri silme olaylarının Entity Framework Code First kullanarak nasıl yapılacağını öğreneceğiz.

.Net Uygulamalarımızda veritabanı işlemlerini Entity Framework ile gerçekleştirirken bize sunulan bir seçenek olan Code-First yaklaşımı ile veritabanımızın tasarımını kod üzerinde gerçekleştirebiliyoruz. Üzerinde çalıştığımız projelerde daha önce yazdığımız kod yapılarında bazı yerleri daha sonra değiştirme gereksinimi duyabiliriz. Veri tabanı yapılarında bu tür olaylarda veritabanı yönetim sistemi üzerinde veritabanını güncelleyip, daha sonra kod bölümünde yeni veritabanına göre Data katmanımızı yeniden şekillendirmemiz gerekiyor. Bu işlemler ise hem zaman alacak hem de maliyeti arttıracaktır. Ayrıca veri tabanımızın eski haline geri dönüş olayı ortadan kalkıp manuel olarak tekrardan her şeyi kendimiz güncellemek zorunda kalacaktık. İşte tüm bu olayları daha az maliyetle ve daha özgür bir şekilde yapabilmek için Code-First yaklaşımı bizim yardımımıza yetişiyor. Bu yaklaşım ile veri tabanı modellemesini kod ile proje içerisinde gerçekleştirdiğimiz için yeni baştan bir veri tabanı tasarımı yapmak yerine tek yapmamız gereken Package Manager Console içerisinde update-database komutunu çalıştırmaktır. Uygulamamızda ana mantık olarak, veritabanımızda tabloları temsil edecek classlar ekleyip, tablo içinde kolonları temsil edecek property alanlarını classlarımıza ekliyoruz. Böylelikle daha özgür bir şekilde kod ve veritabanı tasarımını yapabiliriz. Ayrıca veri tabanında ilişki kurmak daha basit hale geliyor. Bir tablodan başka bir tabloya ilişki kurmak için o tabloyu temsil eden class içerisinde, temsil etmek istediği tablonun class ını property olarak alarak ilişki kurmuş oluyoruz. Öncelikle Visual Studio Programını açarak boş bir solution oluşturalım. Bunun için New Project diyerek açılan Proje şablonları penceresinden Other Project Types başlığı altındaki Visual Studio Solutions bölümünden Blank Solution şablonunu seçip, solution adını belirtip OK butonuna tıklıyoruz. Oluşturduğumuz solutiona sağ tıklayıp Add-> New Project seçeneğini tıklıyoruz.

Projemizin veri tabanı işlemlerini ayrı bir alt projede yapacağız. Böylelikle katmanlı mimariye sahip bir proje elde etmiş olacağız. Bu işlem bize performans ve kaliteli ve temiz kod yazımı sağlayacaktır. Oluşturacağımız bu proje asıl projemizin veri işlemlerini gerçekleştirecek. Bu veri işlemlerini ister masaüstü, ister web, ister mobil projelerde kullanabileceğiz. Her platform için ayrı ayrı veri katmanı oluşturmamak için bu projeyi Class Library şeklinde yazarak bütün platformlardan erişimi sağlayacağız. Proje adını Data Access Layer ın kısaltılmışı olan DAL yapıyoruz. Projemizin son şekli yandaki gibi olacaktır : Default olarak oluşan Class1.cs yi siliyoruz. Daha sonra projeye sağ tıklayarak Add-> New Item seçeneğine tıklıyoruz.

Windows C# Items altında Data sekmesini tıklayıp ADO.NET Entity Data Model seçeğini seçerek, adını belirleyip Add butonuna tıklıyoruz. Veri tabanımızı daha önceden SQL Server tarafında oluşturduğumuz için modelleri direkt olarak veri tabanından çekeceğiz. Bunun için ilk seçenek olan Code First from database seçeneğini seçerek ilerliyoruz.

Şimdi ise veri tabanı bağlantı işlemlerini gerçekleştireceğiz. Bunun için New Connection butonuna tıklıyoruz.

Veri tabanımız localde çalışan bir veri tabanı olduğu için Server name kısmına server ismini yazıyoruz. Server ismini SQL Server Management uygulamasından görebiliriz. Server name kısmına server ismini yazdığımız zaman otomatik içindeki veri tabanları listelenecektir. Daha sonra Connect to a database bölümünden veri tabanını seçiyoruz.

Gerekli ayarları yaptıktan sonra Next butonuna tıklıyoruz.

Bu pencerede veri tabanı bağlantı şifresi için iki seçenek bulunmaktadır. İlk seçenek olan No, exclude sensitive data from the connection string. I will set in my application code. seçeneğinde connection string içerisinde şifre belirtilmez. Şifre program içerisinde daha sonra belirlenir.

İkinci seçenek olan Yes, include the sensitive in the connection string. seçeneğinde connection string içerisinde şifre yer almaktadır.

Daha sonra Next butonuna tıklıyoruz. Veri tabanımızda şu an için sadece tablo oluşturduğumuz için Tables seçeneğini seçiyoruz. Pluralize or singularize generated object names seçeneği ise tablolarımızın adı eğer tekilse, model tarafında otomatik olarak çoğul yapacaktır. (student -> students, person -> people gibi). Bu işlemin ardından Finish butonuna tıklıyoruz.

İlgili tablolara ait class kodları otomatik olarak oluşturulacaktır.

Code First ile kod kısmında yaptığımız değişikliklerin veri tabanında uygulanması için yapılan işleme Migration adı verilir. Örneğin projemizde yeni bir tablo veya bir tablo içerisine başka bir sütun eklememiz veya silmemiz gerektiğinde veritabanı sisteminde bulunan veritabanımızı yeni oluşturduğumuz haline güncellememiz gerekecektir. Ya da yapılan değişikliklerden vazgeçildiğinde, veri tabanının eski haline döndürülmesi gerekecektir. İşte bu durumlarda migration olayları kullanılır. Migration özelliği varsayılan olarak kapalı olarak gelir. Bunu aktif etmek için View -> Other Vindows -> Package Consol Manager menüleri kullanılarak Package Consol Manager penceresi açılır. Açılan Package Consol Manager penceresinde proje olarak DAL seçilir. Bu şekilde migration olayları sadece DAL projesinde gerçekleşecektir. Migration işlemi gerçekleştirebilmek için öncelikle Package Console Manager penceresinde "enable-migrations" komutu ile migration aktif hale getirilir. Eğer migration işleminin otomatik olarak gerçekleştirilmesi istenirse bu komutu "enable-migrations EnableAutomaticMigration:$true" şeklinde yazmalıyız. Classlarımız üzerinde bir değişiklik yapıp, bu değişiklikleri veritabanımıza aktarmak için Add-Migration yazıp enterliyoruz. Daha sonra Migration için bir isim belirlememiz gerekmektedir. İsmini de girerek migration almış oluruz, ancak bu durumda halen veritabanımız güncellenmemiştir. Yaptığımız işlem sonucu DAL projesinde migration diye bir klasör oluşturulup, klasör içerisinde Migration için verdiğimiz isimle bir class oluşturulmuştur. Bu class içerisinde veritabanının önceki haliyle şu anki hali arasındaki fark sql dili şeklinde yazılmıştır. Bunu veritabanına göndermek için Update-Database komutu kullanılır.

Bu işlemin ardından Migration işleminin sonucu Package Console Manager penceresinde görüntülenecektir. Dal projesi içerisinde bulunan Migrations klasörü içerisinde oluştuduğumuz migration class ını görebiliriz. İçeriğine baktığımız zaman yalnızda önceki versiyon ile şuanki versiyon arasındaki farkların alındığını görebiliriz. Değişiklikleri sql veri tabanı üzerinde görmek istediğimiz zaman SSMS(SQL Server Management Server) ile veritabanımıza bağlanıp, üzerinde değişiklik yaptığımız tabloya sağ tıklayarak Select Top 1000 Rows diyerek yeni eklediğimiz sütunları görebiliriz.

WEB SERVİSİ OLUŞTURMA Web servisleri, Http(s) protokolünü kullanan web program parçalarıdır. Dönüş tipi olarak JSON veya XML olarak cevap verebilirler. Uygulamamızda oluşturacağımız web servisi cihazlardan gelen isteklere göre veri tabanından istenilen değerleri alıp, tekrar cihazlara gönderir. Örnek olarak ASP.Net ile bir web servisi oluşturalım. Solution ismine sağ tıklatıp Add-> New Project diyelim. Web başlığı altından ASP.NET Web Application proje şablonunu seçip, proje adını yazarak OK butonuna tıklıyoruz. Karşımıza gelen pencerede ASP.Net Web Application türleri listelenecektir. Uygulamamız için boş bir web servis oluşturacağımızdan dolayı Empty şablonunu seçip Web API yi işaretleyerek OK butonuna tıklıyoruz.

Uygulamamızın router ayarları varsayılan biçimde ayarlanmış biçimde oluşturulmaktadır. Bu ayara App_Start klasörü altında WebApiConfig.cs dosyasından ulaşabiliriz. Varsayılan kodlar aşağıdaki gibidir: public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.maphttpattributeroutes(); config.routes.maphttproute( name: "DefaultApi", routetemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } WebApiConfig.cs içerisindeki versayılan router yapılandırmasına action paremetresi ekliyoruz. Çünkü bir controller içerisinde birden fazla action olabilir. Uygulamamızda her action için farklı değerler alacağımızdan dolayı, url tarafında bunu belirterek hangi controller ve action kullanacağımızı belirtebileceğiz. public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.maphttpattributeroutes(); config.routes.maphttproute( name: "DefaultApi", routetemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); }

Projemizde otomatik olarak oluşturulan Controllers klasörüne sağ tıklayarak Add-> Controller seçeneğine tıklıyoruz. Gelen pencerede controller tipini seçeceğiz. Web API2 Controller Empty seçeneğini seçerek Add butonuna tıklıyoruz. Controller ismini StudentController olarak veriyoruz. Projemizin StudentController eklenmiş son hali aşağıdaki gibi olacaktır:

Entity Framework teknolojisini kullanmak için projemize entity framework paketini eklememiz gerekecek. Bunun için projemize(service) sağ tıklayarak Manage NuGet Packages seçeneğini seçiyoruz. Açılan sayfada Browse sekmesi altındaki EntityFramework u seçerek seçip Install butonuna tıklıyoruz. Listede EntityFramework yoksa Search alanına yazarak bulabilirsiniz. Daha önce oluşturduğumuz Data Access Layer katmanına erişmek için projemize(service) sağ tıklayarak Add- >Reference seçeneğini seçiyoruz.

Projects sekmesinden Solution ı seçerek DAL I işaretleyerek OK butonuna tıklıyoruz. Bu işlemin ardından kod kısmına geçiyoruz. Kodumuzda öncelikle using DAL; satırını ekleyerek DAL referansını projemizde kullanacağımızı belirtiyoruz. Ardından veri tabanından öğrenci numarasına göre verileri çeken web servisimizi yazalım. public class StudentController : ApiController { [HttpGet] //İstek tipi belirttik. [Route("api/Student/GetByNumber/{number}")]// routing tanımladık. public Student GetByNumber(int number) { DigiClassDatabase db = new DigiClassDatabase(); return db.student.firstordefault(st => st.number == number); } } CardKey verilerine göre öğrenci çeken kodumuzu da ekliyoruz. [HttpGet] //İstek tipi belirttik. [Route("api/Student/GetByCard/{CardKey}")] // routing tanımladık. public Student GetByNumber(string CardKey) { using (school_databaseentities school = new school_databaseentities())

} { } DigiClassDatabase db = new DigiClassDatabase(); return db.student.firstordefault(st => st.card.cardkey == CardKey); Uygulamamızı örnek bir kart değerine göre test ederek geriye öğrenci bilgilerinin dönüp dönmediğini test ettik. Öğretmen bilgilerini çekmek için de yukarıda StudentController için yaptığımız şekilde işlem yaparak TeacherController isimli yeni bir controller ekliyoruz. Controller kodunu aşağıdaki gibi düzenliyoruz: public class TeacherController : ApiController { [HttpGet] //İstek tipi belirttik. [Route("api/Teacher/GetByCard/{CardKey}")] public Teacher GetByNumber(string CardKey) { DigiClassDatabase db = new DigiClassDatabase(); return db.teacher.firstordefault(tc => tc.card.cardkey == CardKey); } } Son olarak kart üzerinden gelen öğrenci numarasına göre öğrencinin sınıf bilgisini çekeceğimiz bir controller eklememiz gerekmekte. Çünki her sınıfa ait fotoğraflar farklı klasörlerde saklandığı için gelen sınıf bilgisine göre ilgili öğrencinin resmini görüntüleyeceğiz. Bunun için ClassController isimli yeni bir controller ekliyoruz. Controller kodu aşağıdaki gibi olacak: public class ClassController : ApiController { [HttpGet] [Route("api/Class/GetById/{id}")] public Class GetById(int id) { DigiClassDatabase db = new DigiClassDatabase(); return db.class.firstordefault(st => st.id == id); } [HttpGet]

} [Route("api/Class/GetByStudentNumber/{Number}")] public Class GetByStudentNumber(int number) { DigiClassDatabase db = new DigiClassDatabase(); return (from _student in db.student where _student. Number == number select _student.class). FirstOrDefault(); } GetByID metodumuz gelen ID değerine göre sınıf bilgilerini getirirken, GetByStudentNumber metodumuz ise gelen öğrenci numarası değerine göre, öğrencinin bulunduğu sınıfa dair bilgileri getirmektedir. Web servisimiz hazır hale geldikten sonra sunucuda yayınlamak için, web servisi içeren projeye sağ tıklayarak publish seçeneğine tıklıyoruz. Önümüzde gelen seçenekler arasında Custom seçeneğini seçiyoruz. Gelen pencerede profil ismini belirliyoruz.

Sonraki aşamada publish edilecek dosyaları yerel disk üzerine aktaracağız. Bu şekilde pojemizi temsil eden web servis dll dosyalarını diskimize kaydediyoruz. Gelen pencerede Publish method bölümünden File System seçeneğini seçiyoruz. Target location bölümünde kaydedilecek klasörü belirtiyoruz.

Settings bölümünde publish işlemi ile ilgili ayarları yaparak next butonuna tıklıyoruz.

Preview bölümünde ilgili dosya yolu görüntülenecektir. Son olarak Publish butonuna tıklayarak uygulamamızı yerel dosya yolu üzerinde yayınlıyoruz.

Kaydettiğimiz dosyaları sunucuda çalıştırmak için 3. parti ftp programları yardımıyla sunucuya bağlanıp, dosyalarımızı ftp protokolü üzerinden sunucuya gönderiyoruz.

WEB SERVİS JSON CEVAPLARINI KULLANMA JSON (JavaScript Object Notation) küçük boyutlu veri alışverişlerinde kullanılan javascript tabanlı bir veri formatıdır. Yapı olarak XML veri formatına benzemektedir. [ ] { }, { } "classid": "0", "name": "Volkan", "surname": "AKTAŞ", "number": "121" " classid ": "2", "name": "Ömer", "surname": "YİĞİT", "number": "122" Verileri çekmek için öncelikle bir http isteği oluşturmamız gerekiyor. Bunun için HttpClient tipinde bir nesne oluşturuyoruz. Bu nesne System.Net.Http namespace i içerisinde yer almaktadır. Bu nedenle using System.Net.Http; satırı ile ilgili referansı eklememiz gerekiyor. HttpClient tipinde oluşturduğumuz bu nesneyi client olarak isimlendireceğiz. Client özelliklerinde DefaultRequestHeaders isimli bir özellik bulunmaktadır. Bu özellikle isteklerimize dönen cevapları json formatında kabul edeceğimizi belirtiyoruz. Client nesnesinin GetStringAsync methoduyla haberleşeceğimiz servis adresini ve route tarafını belirteceğiz. Bu metod belirlediğimiz bu servise gidip cevabı alıp bize getirecek. Bundan dolayı bu olayın gerçekleşmesini beklememiz gerekiyor. Buna göre karttan okunan uid değerine göre öğrenci bilgilerini getirecek olan kodumuz aşağıdaki gibi olacak: HttpClient client = new HttpClient(); client.defaultrequestheaders.add("accept", "application/json"); var result = await client.getstringasync(apiurl + $"student/getbycardid/{uid.tostring()}"); var _student = JsonConvert.DeserializeObject<Student>(result); Kodumuzda JsonConvert.DeserializeObject metodu ile json içerisindeki verileri _student isimli nesneye aktarıp name, number vs. gibi bilgilere erişebiliriz.