Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Web Kampları Eğitim Setini indirin
Bu Uygulamalı Laboratuvar, ASP.NET MVC hakkında temel bilgilere sahip olduğunuzu varsayar. MVC'yi daha önce ASP.NET kullanmadıysanız MVC 4 Temel Bilgileri Uygulamalı Laboratuvarı'na ASP.NET geçmenizi öneririz.
Bu laboratuvar, Kaynak klasöründe sağlanan örnek bir Web uygulamasına küçük değişiklikler uygulayarak daha önce açıklanan iyileştirmeler ve yeni özelliklerde size yol gösterir.
Not
Tüm örnek kod ve kod parçacıkları, Microsoft-Web/WebCampTrainingKit Releases adresinde bulunan Web Camps Eğitim Seti'ne dahildir. Bu laboratuvara özgü proje ASP.NET MVC 4 Modelleri ve Veri Erişimi'nde kullanılabilir.
ASP.NET MVC Temel Bilgileri Uygulamalı Laboratuvarı'nda, Denetleyiciler'den Görünüm şablonlarına sabit kodlanmış veriler geçiriyorsunuz. Ancak, gerçek bir Web uygulaması oluşturmak için gerçek bir veritabanı kullanmak isteyebilirsiniz.
Bu Uygulamalı Laboratuvar, Music Store uygulaması için gereken verileri depolamak ve almak için veritabanı altyapısını nasıl kullanacağınızı gösterir. Bunu başarmak için mevcut bir veritabanıyla başlayacak ve varlık veri modelini oluşturacaksınız. Bu laboratuvar boyunca Önce Veritabanı yaklaşımının yanı sıra Code First yaklaşımını da karşılayacaksınız.
Ancak, Model First yaklaşımını da kullanabilir, araçları kullanarak aynı modeli oluşturabilir ve ardından veritabanını oluşturabilirsiniz.
Önce Veritabanı ve Model İlk karşılaştırması
Modeli oluşturdıktan sonra, Sabit kodlanmış verileri kullanmak yerine Store Görünümlerine veritabanından alınan verileri sağlamak için StoreController'da uygun ayarlamaları yapacaksınız. StoreController aynı ViewModel'leri Görünüm şablonlarına döndüreceği için Görünüm şablonlarında herhangi bir değişiklik yapmanız gerekmez, ancak bu kez veriler veritabanından gelir.
İlk Kod Yaklaşımı
Code First yaklaşımı genellikle çerçeveyle birleştirilmiş sınıflar oluşturmadan koddan modeli tanımlamamıza olanak tanır.
İlk olarak kodda, model nesneleri POCO'lar ile tanımlanır, "Düz Eski CLR Nesneleri". POCO'lar devralmayan ve arabirimleri uygulamayan basit düz sınıflardır. Veritabanını onlardan otomatik olarak oluşturabilir veya mevcut bir veritabanını kullanarak koddan sınıf eşlemesi oluşturabiliriz.
Bu yaklaşımı kullanmanın avantajları, POCO sınıfları eşleme çerçevesiyle birleştirilmediğinden Modelin kalıcılık çerçevesinden (bu örnekte Entity Framework) bağımsız kalmasıdır.
Not
Bu Laboratuvar, ASP.NET MVC 4'e ve Yalnızca bu Uygulamalı Laboratuvarda gösterilen özelliklere uyacak şekilde özelleştirilmiş ve simge durumuna küçültülmüş Music Store örnek uygulamasını temel alır.
Tüm Music Store öğretici uygulamasını keşfetmek isterseniz MVC-Music-Store'da bulabilirsiniz.
Önkoşullar
Bu laboratuvarı tamamlamak için aşağıdaki öğelere sahip olmanız gerekir:
Ayarlama
Kod Parçacıklarını Yükleme
Kolaylık olması için, bu laboratuvarda yöneteceğin kodun büyük bölümü Visual Studio kod parçacıkları olarak kullanılabilir. Kod parçacıklarını yüklemek için .\Source\Setup\CodeSnippets.vsi dosyasını çalıştırın.
Visual Studio Code Kod Parçacıkları hakkında bilginiz yoksa ve bunların nasıl kullanılacağını öğrenmek istiyorsanız, bu belgedeki "Ek C: Kod Parçacıklarını Kullanma" ekine bakabilirsiniz.
Egzersiz
Bu Uygulamalı Laboratuvar aşağıdaki alıştırmalardan oluşur:
- Alıştırma 1: Veritabanı Ekleme
- Alıştırma 2: Önce Kod Kullanarak Veritabanı Oluşturma
- Alıştırma 3: Veritabanını Parametrelerle Sorgulama
Not
Her alıştırmaya, alıştırmaları tamamladıktan sonra edinmeniz gereken çözümü içeren bir End klasörü eşlik eder. Alıştırmalar üzerinde ek yardıma ihtiyacınız varsa bu çözümü kılavuz olarak kullanabilirsiniz.
Bu laboratuvarın tamamlanması için tahmini süre: 35 dakika.
Alıştırma 1: Veritabanı Ekleme
Bu alıştırmada, MusicStore uygulamasının tablolarını içeren bir veritabanının verilerini kullanmak için çözüme nasıl ekleneceğini öğreneceksiniz. Veritabanı modelle oluşturulduktan ve çözüme eklendikten sonra, Sabit kodlanmış değerler kullanmak yerine Veritabanından alınan verileri View şablonu sağlamak için StoreController sınıfını değiştireceksiniz.
Görev 1 - Veritabanı Ekleme
Bu görevde, çözüme MusicStore uygulamasının ana tablolarını içeren önceden oluşturulmuş bir veritabanı ekleyeceksiniz.
Source/Ex1-AddingADatabaseDBFirst/Begin/ klasöründe bulunan Begin çözümünü açın.
Devam etmeden önce bazı eksik NuGet paketlerini indirmeniz gerekir. Bunu yapmak için Proje menüsüne tıklayın ve NuGet Paketlerini Yönet'i seçin.
Eksik paketleri indirmek için NuGet Paketlerini Yönet iletişim kutusunda Geri Yükle'ye tıklayın.
Son olarak, Derleme Çözümü Oluştur'a | tıklayarak çözümü derleyin.
Not
NuGet kullanmanın avantajlarından biri, projenizdeki tüm kitaplıkları göndermeniz gerekmesi ve proje boyutunu küçültmenizdir. NuGet Power Tools ile Packages.config dosyasında paket sürümlerini belirterek, projeyi ilk kez çalıştırdığınızda gerekli tüm kitaplıkları indirebilirsiniz. Bu nedenle, bu laboratuvardan mevcut bir çözümü açtıktan sonra bu adımları çalıştırmanız gerekir.
MvcMusicStore veritabanı dosyası ekleyin. Bu Uygulamalı Laboratuvarda, MvcMusicStore.mdf adlı önceden oluşturulmuş bir veritabanı kullanacaksınız. Bunu yapmak için App_Data klasörüne sağ tıklayın, Ekle'nin üzerine gelin ve Varolan Öğe'ye tıklayın. \Source\Assets konumuna gidin ve MvcMusicStore.mdf dosyasını seçin.
Mevcut Öğe Ekleme
veritabanı dosyasını MvcMusicStore.mdf
Veritabanı projeye eklendi. Veritabanı çözümün içinde olsa bile, farklı bir veritabanı sunucusunda barındırıldığı için veritabanını sorgulayabilir ve güncelleştirebilirsiniz.
Çözüm Gezgini'da MvcMusicStore veritabanı
Veritabanı bağlantısını doğrulayın. Bunu yapmak için MvcMusicStore.mdf çift tıklayarak bağlantı kurun.
MvcMusicStore.mdf bağlanma
Görev 2 - Veri Modeli Oluşturma
Bu görevde, önceki göreve eklenen veritabanıyla etkileşim kurmak için bir veri modeli oluşturacaksınız.
Veritabanını temsil edecek bir veri modeli oluşturun. Bunu yapmak için, Çözüm Gezgini Modeller klasörüne sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Öğe'ye tıklayın. Yeni Öğe Ekle iletişim kutusunda Veri şablonunu ve ardından Varlık Veri Modeli öğesini ADO.NET. Veri modeli adını StoreDB.edmx olarak değiştirin ve Ekle'ye tıklayın.
StoreDB ADO.NET Varlık Veri Modeli Ekleme
Varlık Veri Modeli Sihirbazı görüntülenir. Bu sihirbaz, model katmanı oluşturma işleminde size yol gösterir. Modelin yakın zamanda eklenen mevcut veritabanına göre oluşturulması gerektiğinden Veritabanından oluştur'a tıklayın ve İleri'ye tıklayın.
Model içeriğini seçme
Veritabanından model oluşturduğunuz için kullanılacak bağlantıyı belirtmeniz gerekir. Yeni Bağlantı'ya tıklayın.
Microsoft SQL Server Veritabanı Dosyası'nu seçin ve Devam'a tıklayın.
Veri kaynağı seç iletişim kutusu
Gözat'a tıklayın, App_Data klasöründe bulunan veritabanı MvcMusicStore.mdf seçin ve Tamam'a tıklayın.
Bağlantı özellikleri
Oluşturulan sınıfın adı varlık bağlantı dizesi aynı olmalıdır, bu nedenle adını MusicStoreEntities olarak değiştirin ve İleri'ye tıklayın.
Veri bağlantısını seçme
Kullanılacak veritabanı nesnelerini seçin. Varlık Modeli yalnızca veritabanının tablolarını kullanacağı için Tablolar seçeneğini belirleyin ve Modele yabancı anahtar sütunları ekle ve Oluşturulan nesne adlarını çoğullaştır veya tekilleştir seçeneklerinin de seçili olduğundan emin olun. Model Ad Alanı'nı MvcMusicStore.Model olarak değiştirin ve Son'a tıklayın.
Veritabanı nesnelerini seçme
Not
Güvenlik Uyarısı iletişim kutusu gösteriliyorsa, şablonu çalıştırmak ve model varlıkları için sınıfları oluşturmak için Tamam'a tıklayın.
Veritabanı için bir varlık diyagramı görüntülenirken, her tabloyu veritabanına eşleyen ayrı bir sınıf oluşturulur. Örneğin, Albums tablosu, tablodaki her sütunun bir sınıf özelliğine eşlendiği bir Album sınıfıyla temsil edilir. Bu, veritabanındaki satırları temsil eden nesneleri sorgulamanıza ve bunlarla çalışmanıza olanak sağlar.
Varlık diyagramı
Not
T4 şablonları (.tt) varlık sınıflarını oluşturmak için kodu çalıştırır ve aynı ada sahip mevcut sınıfların üzerine yazar. Bu örnekte oluşturulan kodla "Albüm", "Tarz" ve "Sanatçı" sınıflarının üzerine yazılmıştır.
Görev 3 - Uygulamayı Oluşturma
Bu görevde, model oluşturma Albüm, Tarz ve Sanatçı model sınıflarını kaldırmış olsa da projenin yeni veri modeli sınıflarını kullanarak başarıyla derlendiğini denetleyebilirsiniz.
Oluştur menü öğesini ve ardından Build MvcMusicStore'yi seçerek projeyi derleyin.
Projeyi oluşturma
Proje başarıyla derlensin. Neden hala çalışıyor? Veritabanı tablolarında, kaldırılan Albüm ve Tarz sınıflarında kullandığınız özellikleri içeren alanlar bulunduğundan çalışır.
Derlemeler başarılı oldu
Tasarımcı varlıkları diyagram biçiminde görüntülerken, bunlar gerçekten C# sınıflarıdır. Çözüm Gezgini StoreDB.edmx düğümünü genişletin ve StoreDB.tt yeni oluşturulan varlıkları görürsünüz.
Oluşturulan dosyalar
Görev 4 - Veritabanını Sorgulama
Bu görevde StoreController sınıfını, sabit kodlanmış verileri kullanmak yerine bilgileri almak üzere veritabanını sorgulayacak şekilde güncelleştireceksiniz.
Controllers\StoreController.cs dosyasını açın ve MusicStoreEntities sınıfının storeDB adlı bir örneğini tutmak için sınıfına aşağıdaki alanı ekleyin:
(Kod Parçacığı - Modeller ve veri erişimi - Ex1 storeDB)
public class StoreController : Controller { private MusicStoreEntities storeDB = new MusicStoreEntities();
MusicStoreEntities sınıfı, veritabanındaki her tablo için bir koleksiyon özelliği sunar. Tüm Albümlerle bir Tarz almak için Gözat eylemi yöntemini güncelleştirin.
(Kod Parçacığı - Modeller ve veri erişimi - Ex1 Store Gözatma)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = new Genre { Name = genre, Albums = this.storeDB.Albums.ToList() }; return this.View(genreModel); }
Not
LinQ (dille tümleşik sorgu) adlı bir .NET özelliğini kullanarak bu koleksiyonlara kesin olarak türlenmiş sorgu ifadeleri yazabilirsiniz. Bu özellik veritabanında kod yürütür ve programlama yapabileceğiniz nesneleri döndürür.
LINQ hakkında daha fazla bilgi için msdn sitesini ziyaret edin.
Tüm türleri almak için Dizin eylem yöntemini güncelleştirin.
(Kod Parçacığı - Modeller ve veri erişimi - Ex1 Store Dizini)
public ActionResult Index() { var genres = this.storeDB.Genres; return this.View(genres); }
Tüm türleri almak ve koleksiyonu bir listeye dönüştürmek için Dizin eylem yöntemini güncelleştirin.
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex1 Store GenreMenu)
// GET: /Store/GenreMenu [ChildActionOnly] public ActionResult GenreMenu() { var genres = this.storeDB.Genres.Take(9).ToList(); return this.PartialView(genres); }
Görev 5 - Uygulamayı Çalıştırma
Bu görevde, Mağaza Dizini sayfasının artık sabit kodlanmış olanlar yerine veritabanında depolanan Tarzlar'ı görüntüleyip görüntüleyeceğini denetleyebilirsiniz. StoreController daha önce olduğu gibi aynı varlıkları döndüreceği için Görünüm şablonunu değiştirmeniz gerekmez, ancak bu kez veriler veritabanından gelir.
Çözümü yeniden derleyin ve Uygulamayı çalıştırmak için F5 tuşuna basın.
Proje Giriş sayfasında başlar. Tarzlar menüsünün artık sabit kodlanmış bir liste olmadığını ve verilerin doğrudan veritabanından alındığını doğrulayın.
Veritabanından Tarzlara Göz Atma
Şimdi herhangi bir türe göz atın ve albümlerin veritabanından doldurulup doldurulmadığını doğrulayın.
Veritabanından Albümlere Göz Atma
Alıştırma 2: Önce Kod Kullanarak Veritabanı Oluşturma
Bu alıştırmada, MusicStore uygulamasının tablolarını içeren bir veritabanı oluşturmak için Code First yaklaşımını kullanmayı ve verilerine nasıl erişeceğinizi öğreneceksiniz.
Model oluşturulduktan sonra, StoreController'ı sabit kodlanmış değerler kullanmak yerine veritabanından alınan verileri Görünüm şablonuna sağlayacak şekilde değiştireceksiniz.
Not
Alıştırma 1'i tamamladıysanız ve Önce Veritabanı yaklaşımıyla zaten çalıştıysanız, artık farklı bir işlemle aynı sonuçları nasıl alacağınızı öğreneceksiniz. Alıştırma 1 ile ortak olan görevler, okumanızı kolaylaştırmak için işaretlendi. Alıştırma 1'i tamamlamadıysanız ancak Önce Kod yaklaşımını öğrenmek istiyorsanız, bu alıştırmadan başlayabilir ve konunun tam kapsamını öğrenebilirsiniz.
Görev 1 - Örnek Verileri Doldurma
Bu görevde, başlangıçta Code-First kullanılarak oluşturulduğunda veritabanını örnek verilerle dolduracaksınız.
Source/Ex2-CreatingADatabaseCodeFirst/Begin/ klasöründe bulunan Begin çözümünü açın. Aksi takdirde, önceki alıştırmayı tamamlayarak elde edilen End çözümünü kullanmaya devam edebilirsiniz.
Sağlanan Başlangıç çözümünü açtıysanız devam etmeden önce bazı eksik NuGet paketlerini indirmeniz gerekir. Bunu yapmak için Proje menüsüne tıklayın ve NuGet Paketlerini Yönet'i seçin.
Eksik paketleri indirmek için NuGet Paketlerini Yönet iletişim kutusunda Geri Yükle'ye tıklayın.
Son olarak, Derleme Çözümü Oluştur'a | tıklayarak çözümü derleyin.
Not
NuGet kullanmanın avantajlarından biri, projenizdeki tüm kitaplıkları göndermeniz gerekmesi ve proje boyutunu küçültmenizdir. NuGet Power Tools ile Packages.config dosyasında paket sürümlerini belirterek, projeyi ilk kez çalıştırdığınızda gerekli tüm kitaplıkları indirebilirsiniz. Bu nedenle, bu laboratuvardan mevcut bir çözümü açtıktan sonra bu adımları çalıştırmanız gerekir.
SampleData.cs dosyasını Modeller klasörüne ekleyin. Bunu yapmak için Modeller klasörüne sağ tıklayın, Ekle'nin üzerine gelin ve Varolan Öğe'ye tıklayın. \Source\Assets konumuna gidin ve SampleData.cs dosyasını seçin.
Örnek veri doldurma kodu
Global.asax.cs dosyasını açın ve aşağıdaki using deyimlerini ekleyin.
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex2 Global Asax Usings)
using MvcMusicStore.Models; using System.Data.Entity;
veritabanı başlatıcısını ayarlamak için Application_Start() yöntemine aşağıdaki satırı ekleyin.
(Kod Parçacığı - Modeller ve veri erişimi - Ex2 Genel Asax SetInitializer)
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); Database.SetInitializer(new SampleData()); }
Görev 2 - Veritabanı bağlantısını yapılandırma
Projemize zaten bir veritabanı eklediğinize göre, web.config dosyasına bağlantı dizesi yazacaksınız.
Web.config'de bir bağlantı dizesi ekleyin. Bunu yapmak için proje kökünde Web.config dosyasını açın ve DefaultConnection adlı bağlantı dizesi connectionStrings> bölümündeki şu satırla <değiştirin:
Web.config dosya konumu
<configuration> ... <connectionStrings> <add name="MusicStoreEntities" connectionString="data source=(LocalDb)\v11.0;initial catalog=MvcMusicStore;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MvcMusicStore.mdf" providerName="System.Data.SqlClient" /> </connectionStrings> ...
Görev 3 - Modelle Çalışma
Veritabanı bağlantısını zaten yapılandırdığınıza göre, modeli veritabanı tablolarına bağlayacaksınız. Bu görevde, Önce Kod ile veritabanına bağlanacak bir sınıf oluşturacaksınız. Değiştirilmesi gereken mevcut bir POCO model sınıfı olduğunu unutmayın.
Not
Alıştırma 1'i tamamladıysanız, bu adımın bir sihirbaz tarafından gerçekleştirildiğini göreceksiniz. İlk Kod'u yaparak, veri varlıklarına bağlanacak sınıfları el ile oluşturacaksınız.
Modeller proje klasöründen POCO model sınıfı Genre'i açın ve bir kimlik ekleyin. GenreId adlı bir int özelliği kullanın.
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex2 Code First Genre)
namespace MvcMusicStore.Models { using System.Collections.Generic; public class Genre { public int GenreId { get; set; } public string Name { get; set; } public string Description { get; set; } public List<Album> Albums { get; set; } } }
Not
Code First kurallarıyla çalışmak için Tarz sınıfının otomatik olarak algılanacak bir birincil anahtar özelliği olmalıdır.
Bu msdn makalesinde Code First Conventions hakkında daha fazla bilgi edinebilirsiniz.
Şimdi, Modellerden POCO model sınıfı Albüm proje klasörünü açın ve yabancı anahtarları ekleyin, GenreId ve ArtistId adlarıyla özellikler oluşturun. Bu sınıfta birincil anahtar için GenreId zaten var.
(Kod Parçacığı - Modeller ve veri erişimi - Ex2 Code first album)
namespace MvcMusicStore.Models { public class Album { public int AlbumId { get; set; } public int GenreId { get; set; } public int ArtistId { get; set; } public string Title { get; set; } public decimal Price { get; set; } public string AlbumArtUrl { get; set; } public virtual Genre Genre { get; set; } public virtual Artist Artist { get; set; } } }
ARTIST POCO model sınıfını açın ve ArtistId özelliğini ekleyin.
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex2 Code First Artist)
namespace MvcMusicStore.Models { public class Artist { public int ArtistId { get; set; } public string Name { get; set; } } }
Modeller proje klasörüne sağ tıklayın ve Ekle | öğesini seçin Sınıf. Dosyayı MusicStoreEntities.cs olarak adlandırın. Ardından Ekle'ye tıklayın .
Yeni öğe ekleme
Sınıf ekleme
Yeni oluşturduğunuz sınıfı açın, MusicStoreEntities.cs ve System.Data.Entity ve System.Data.Entity.Infrastructure ad alanlarını ekleyin.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Data.Entity.Infrastructure; ...
DbContext sınıfını genişletmek için sınıf bildirimini değiştirin: bir genel DBSet bildirin ve OnModelCreating yöntemini geçersiz kılın. Bu adımdan sonra modelinizi Entity Framework'e bağlayacak bir etki alanı sınıfı alırsınız. Bunu yapmak için sınıf kodunu aşağıdakilerle değiştirin:
(Kod Parçacığı - Modeller ve veri erişimi - Ex2 Code First MusicStoreEntities)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace MvcMusicStore.Models { public class MusicStoreEntities : DbContext { public DbSet<Genre> Genres { get; set; } public DbSet<Album> Albums { get; set; } public DbSet<Artist> Artists { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Genre>().ToTable("Genres"); modelBuilder.Entity<Album>().ToTable("Albums"); modelBuilder.Entity<Artist>().ToTable("Artists"); base.OnModelCreating(modelBuilder); } } }
Not
Entity Framework DbContext ve DBSet ile POCO sınıfı Tarz'ı sorgulayabileceksiniz. OnModelCreating yöntemini genişleterek, kodda Genre'in bir veritabanı tablosuna nasıl eşleneceğini belirtirsiniz. DBContext ve DBSet hakkında daha fazla bilgiyi şu msdn makalesinde bulabilirsiniz: bağlantı
Görev 4 - Veritabanını Sorgulama
Bu görevde StoreController sınıfını, sabit kodlanmış verileri kullanmak yerine veritabanından alacak şekilde güncelleştireceksiniz.
Not
Bu görev Alıştırma 1 ile ortaktır.
Alıştırma 1'i tamamladıysanız bu adımların her iki yaklaşımda da aynı olduğunu göreceksiniz (Önce veritabanı veya önce kod). Verilerin modelle bağlantısı farklıdır, ancak veri varlıklarına erişim henüz denetleyiciden saydamdır.
Controllers\StoreController.cs dosyasını açın ve MusicStoreEntities sınıfının storeDB adlı bir örneğini tutmak için sınıfına aşağıdaki alanı ekleyin:
(Kod Parçacığı - Modeller ve veri erişimi - Ex1 storeDB)
public class StoreController : Controller { private MusicStoreEntities storeDB = new MusicStoreEntities(); ... }
MusicStoreEntities sınıfı, veritabanındaki her tablo için bir koleksiyon özelliği sunar. Tüm Albümlerle bir Tarz almak için Gözat eylemi yöntemini güncelleştirin.
(Kod Parçacığı - Modeller ve veri erişimi - Ex2 Store Gözatma)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = new Genre { Name = genre, Albums = this.storeDB.Albums.ToList() }; return this.View(genreModel); }
Not
LinQ (dille tümleşik sorgu) adlı bir .NET özelliğini kullanarak bu koleksiyonlara kesin olarak türlenmiş sorgu ifadeleri yazabilirsiniz. Bu özellik veritabanında kod yürütür ve programlama yapabileceğiniz nesneleri döndürür.
LINQ hakkında daha fazla bilgi için msdn sitesini ziyaret edin.
Tüm türleri almak için Dizin eylem yöntemini güncelleştirin.
(Kod Parçacığı - Modeller ve veri erişimi - Ex2 Store Dizini)
public ActionResult Index() { var genres = this.storeDB.Genres; return this.View(genres); }
Tüm türleri almak ve koleksiyonu bir listeye dönüştürmek için Dizin eylem yöntemini güncelleştirin.
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex2 Store GenreMenu)
// GET: /Store/GenreMenu [ChildActionOnly] public ActionResult GenreMenu() { var genres = this.storeDB.Genres.Take(9).ToList(); return this.PartialView(genres); }
Görev 5 - Uygulamayı Çalıştırma
Bu görevde, Mağaza Dizini sayfasının artık sabit kodlanmış olanlar yerine veritabanında depolanan Tarzlar'ı görüntüleyip görüntüleyeceğini denetleyebilirsiniz. StoreController öncekiyle aynı StoreIndexViewModel'i döndürdiğinden Görünüm şablonunu değiştirmeniz gerekmez, ancak bu kez veriler veritabanından gelir.
Çözümü yeniden derleyin ve Uygulamayı çalıştırmak için F5 tuşuna basın.
Proje Giriş sayfasında başlar. Tarzlar menüsünün artık sabit kodlanmış bir liste olmadığını ve verilerin doğrudan veritabanından alındığını doğrulayın.
Veritabanından Tarzlara Göz Atma
Şimdi herhangi bir türe göz atın ve albümlerin veritabanından doldurulup doldurulmadığını doğrulayın.
Veritabanından Albümlere Göz Atma
Alıştırma 3: Veritabanını Parametrelerle Sorgulama
Bu alıştırmada, parametreleri kullanarak veritabanını sorgulamayı ve veritabanı erişim sayısını azaltan Sorgu Sonucu Şekillendirme özelliğini kullanmayı daha verimli bir şekilde öğreneceksiniz.
Not
Sorgu Sonucu Şekillendirme hakkında daha fazla bilgi için aşağıdaki msdn makalesini ziyaret edin.
Görev 1 - StoreController'ı Veritabanından Albüm Alacak Şekilde Değiştirme
Bu görevde, belirli bir türden albümleri almak için Veritabanına erişmek için StoreController sınıfını değiştireceksiniz.
Database-First yaklaşımını kullanmak istiyorsanız Source\Ex3-QueryingTheDatabaseWithParametersCodeFirst\Begin klasöründe bulunan Begin çözümünü açın. Aksi takdirde, önceki alıştırmayı tamamlayarak elde edilen End çözümünü kullanmaya devam edebilirsiniz.
Sağlanan Başlangıç çözümünü açtıysanız devam etmeden önce bazı eksik NuGet paketlerini indirmeniz gerekir. Bunu yapmak için Proje menüsüne tıklayın ve NuGet Paketlerini Yönet'i seçin.
Eksik paketleri indirmek için NuGet Paketlerini Yönet iletişim kutusunda Geri Yükle'ye tıklayın.
Son olarak, Derleme Çözümü Oluştur'a | tıklayarak çözümü derleyin.
Not
NuGet kullanmanın avantajlarından biri, projenizdeki tüm kitaplıkları göndermeniz gerekmesi ve proje boyutunu küçültmenizdir. NuGet Power Tools ile Packages.config dosyasında paket sürümlerini belirterek, projeyi ilk kez çalıştırdığınızda gerekli tüm kitaplıkları indirebilirsiniz. Bu nedenle, bu laboratuvardan mevcut bir çözümü açtıktan sonra bu adımları çalıştırmanız gerekir.
Browse eylem yöntemini değiştirmek için StoreController sınıfını açın. Bunu yapmak için, Çözüm Gezgini Denetleyiciler klasörünü genişletin ve StoreController.cs çift tıklayın.
Belirli bir türe ilişkin albümleri almak için Gözat eylemi yöntemini değiştirin. Bunu yapmak için aşağıdaki kodu değiştirin:
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex3 StoreController BrowseMethod)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = this.storeDB.Genres.Include("Albums") .Single(g => g.Name == genre); return this.View(genreModel); }
Not
Varlığın koleksiyonunu doldurmak için, albümleri de almak istediğinizi belirtmek için Include yöntemini kullanmanız gerekir. komutunu kullanabilirsiniz.LinQ'de Single() uzantısı çünkü bu durumda bir albüm için yalnızca bir tür beklenir. Single() yöntemi parametre olarak bir Lambda ifadesi alır ve bu durumda adı tanımlanan değerle eşleşir gibi tek bir Genre nesnesi belirtir.
Genre nesnesi alındığında, yüklenmesini istediğiniz diğer ilgili varlıkları da belirtmenize olanak tanıyan bir özelliğin avantajlarından yararlanacaksınız. Bu özellik Sorgu Sonucu Şekillendirme olarak adlandırılır ve bilgileri almak için veritabanına erişmek için gereken sayısını azaltmanıza olanak tanır. Bu senaryoda, aldığınız Tarz için Albümleri önceden getirmek isteyeceksiniz.
Sorgu, ilgili albümleri de istediğinizi belirtmek için Genres.Include("Albums") içerir. Bu, tek bir veritabanı isteğinde hem Tarz hem de Albüm verilerini alacağı için daha verimli bir uygulama elde eder.
Görev 2 - Uygulamayı Çalıştırma
Bu görevde, uygulamayı çalıştıracak ve veritabanından belirli bir türe ait albümleri alacaktır.
Uygulamayı çalıştırmak için F5 tuşuna basın.
Proje Giriş sayfasında başlar. Sonuçların veritabanından alındığını doğrulamak için URL'yi /Store/Browse?genre=Pop olarak değiştirin.
Gözatma /Store/Browse?genre=Pop
Görev 3 - Kimlikle Albümlere Erişme
Bu görevde, albümleri kimliklerine göre almak için önceki yordamı yineleyeceksiniz.
Gerekirse Visual Studio'ya dönmek için tarayıcıyı kapatın. Details eylem yöntemini değiştirmek için StoreController sınıfını açın. Bunu yapmak için, Çözüm Gezgini Denetleyiciler klasörünü genişletin ve StoreController.cs çift tıklayın.
Albüm ayrıntılarını kimliklerine göre almak için Ayrıntılar eylem yöntemini değiştirin. Bunu yapmak için aşağıdaki kodu değiştirin:
(Kod Parçacığı - Modeller ve Veri Erişimi - Ex3 StoreController AyrıntılarıMethod)
// GET: /Store/ public ActionResult Details(int id) { var album = this.storeDB.Albums.Find(id); if (album == null) { return this.HttpNotFound(); } return this.View(album); }
Görev 4 - Uygulamayı Çalıştırma
Bu görevde, Uygulamayı bir web tarayıcısında çalıştıracak ve albüm ayrıntılarını kimliklerine göre edineceksiniz.
Uygulamayı çalıştırmak için F5 tuşuna basın.
Proje Giriş sayfasında başlar. URL'yi /Store/Details/51 olarak değiştirin veya sonuçların veritabanından alındığını doğrulamak için tarzlara göz atın ve bir albüm seçin.
Gözatma /Mağaza/Ayrıntılar/51
Not
Ayrıca, Ek B: Web Dağıtımı kullanarak ASP.NET MVC 4 Uygulaması Yayımlama'yı izleyerek bu uygulamayı Windows Azure Web Sitelerine dağıtabilirsiniz.
Özet
Bu Uygulamalı Laboratuvar'ı tamamlayarak, Önce Veritabanı yaklaşımının yanı sıra Code First Yaklaşımını kullanarak ASP.NET MVC Modelleri ve Veri Erişimi ile ilgili temel bilgileri öğrendiniz:
- Verilerini kullanmak için çözüme veritabanı ekleme
- Sabit kodlanmış şablon yerine veritabanından alınan verileri Görüntüleme şablonları sağlamak için Denetleyiciler'i güncelleştirme
- Parametreleri kullanarak veritabanını sorgulama
- Veritabanı erişim sayısını azaltan ve verileri daha verimli bir şekilde alan Sorgu Sonucu Şekillendirme özelliğini kullanma
- Veritabanını modele bağlamak için Microsoft Entity Framework'te hem Database First hem de Code First yaklaşımlarını kullanma
Ek A: Web için Visual Studio Express 2012'yi yükleme
Microsoft Web Platformu Yükleyicisi kullanarak Web için Microsoft Visual Studio Express 2012'yi veya başka bir "Express" sürümünü yükleyebilirsiniz. Aşağıdaki yönergeler, Microsoft Web Platformu Yükleyicisi kullanarak Web için Visual Studio Express 2012'yi yüklemek için gereken adımlarda size yol gösterir.
[/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169](/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169) adresine gidin. Alternatif olarak, Web Platformu Yükleyicisi'ni zaten yüklediyseniz, bu yükleyiciyi açabilir ve "Windows Azure SDK ile Web için Visual Studio Express 2012" ürününü arayabilirsiniz.
Şimdi Yükle'ye tıklayın. Web Platformu Yükleyicisi'niz yoksa, önce indirmeye ve yüklemeye yönlendirilirsiniz.
Web Platformu Yükleyicisi açıldıktan sonra kurulumu başlatmak için Yükle'ye tıklayın.
Visual Studio Express'i yükleme
Tüm ürünlerin lisanslarını ve koşullarını okuyun ve devam etmek için Kabul Ediyorum'a tıklayın.
Lisans koşullarını kabul etme
İndirme ve yükleme işlemi tamamlanana kadar bekleyin.
Yükleme ilerleme durumu
Yükleme tamamlandığında Son'a tıklayın.
Yükleme tamamlandı
Web Platformu Yükleyicisi'ne kapatmak için Çıkış'a tıklayın.
Web için Visual Studio Express'i açmak için Başlangıç ekranına gidin ve "VS Express" yazmaya başlayın, ardından Web için VS Express kutucuğuna tıklayın.
Web için VS Express kutucuğu
Ek B: Web Dağıtımı kullanarak ASP.NET MVC 4 Uygulaması Yayımlama
Bu ek, Windows Azure Yönetim Portalı'ndan yeni bir web sitesi oluşturmayı ve Windows Azure tarafından sağlanan Web Dağıtımı yayımlama özelliğinden yararlanarak laboratuvarı izleyerek elde ettiğiniz uygulamayı yayımlamayı gösterir.
Görev 1 - Windows Azure Portalı'ndan Yeni Bir Web Sitesi Oluşturma
Windows Azure Yönetim Portalı'na gidin ve aboneliğinizle ilişkili Microsoft kimlik bilgilerini kullanarak oturum açın.
Not
Windows Azure ile 10 ASP.NET Web Sitesini ücretsiz olarak barındırabilir ve trafiğiniz büyüdükçe ölçeklendirin. Buradan kaydolabilirsiniz.
Windows Azure Yönetim Portalı'nda oturum açma
Komut çubuğunda Yeni'ye tıklayın.
Yeni Bir Web Sitesi Oluşturma
İşlem | Web Sitesi'ne tıklayın. Ardından Hızlı Oluştur seçeneğini belirleyin. Yeni web sitesi için kullanılabilir bir URL sağlayın ve Web Sitesi Oluştur'a tıklayın.
Not
Windows Azure Web Sitesi, bulutta çalışan ve denetleyebileceğiniz ve yönetebileceğiniz bir web uygulamasının konağıdır. Hızlı Oluştur seçeneği, tamamlanmış bir web uygulamasını portalın dışından Windows Azure Web Sitesine dağıtmanıza olanak tanır. Veritabanı ayarlama adımlarını içermez.
Hızlı Oluştur'u kullanarak yeni bir Web Sitesi oluşturma
Yeni Web Sitesi oluşturulana kadar bekleyin.
Web Sitesi oluşturulduktan sonra URL sütununun altındaki bağlantıya tıklayın. Yeni Web Sitesinin çalışıp çalışmadığını denetleyin.
Yeni web sitesine göz atma
Web sitesi çalışıyor
Portala geri dönün ve yönetim sayfalarını görüntülemek için Ad sütununun altındaki web sitesinin adına tıklayın.
Web Sitesi yönetim sayfalarını açma
Pano sayfasındaki hızlı bakış bölümünün altında Yayımlama profilini indir bağlantısına tıklayın.
Not
Yayımlama profili, etkinleştirilen her yayın yöntemi için bir web uygulamasını Windows Azure web sitesine yayımlamak için gereken tüm bilgileri içerir. Yayımlama profili, bir yayın yönteminin etkinleştirildiği uç noktaların her birine bağlanmak ve bu uç noktalarda kimlik doğrulaması yapmak için gereken URL'leri, kullanıcı kimlik bilgilerini ve veritabanı dizelerini içerir. Microsoft WebMatrix 2, Web için Microsoft Visual Studio Express ve Microsoft Visual Studio 2012, web uygulamalarını Windows Azure web sitelerine yayımlamak için bu programların yapılandırmasını otomatikleştirmek için yayımlama profillerini okumayı destekler.
Web Sitesi yayımlama profilini indirme
Profil yayımlama dosyasını bilinen bir konuma indirin. Bu alıştırmanın devamında, Visual Studio'dan bir Windows Azure Web Sitelerine web uygulaması yayımlamak için bu dosyanın nasıl kullanılacağını göreceksiniz.
Yayımlama profili dosyasını kaydetme
Görev 2 - Veritabanı Sunucusunu Yapılandırma
Uygulamanız SQL Server veritabanlarını kullanıyorsa bir SQL Veritabanı sunucusu oluşturmanız gerekir. SQL Server kullanmayan basit bir uygulama dağıtmak istiyorsanız bu görevi atlayabilirsiniz.
Uygulama veritabanını depolamak için bir SQL Veritabanı sunucusu gerekir. Aboneliğinizdeki SQL Veritabanı sunucularını Sql Veritabanları | Sunucuları | Sunucusu Panosu'ndaki Windows Azure Yönetim portalında görüntüleyebilirsiniz. Oluşturulmuş bir sunucunuz yoksa, komut çubuğundaki Ekle düğmesini kullanarak bir sunucu oluşturabilirsiniz. Sonraki görevlerde kullanacağınız için sunucu adını ve URL'sini, yönetici oturum açma adını ve parolayı not alın. Veritabanını daha sonraki bir aşamada oluşturulacağı için henüz oluşturmayın.
sunucu panosunu SQL Veritabanı
Sonraki görevde Visual Studio'dan veritabanı bağlantısını test edecek, bu nedenle yerel IP adresinizi sunucunun İzin Verilen IP Adresleri listesine eklemeniz gerekir. Bunu yapmak için Yapılandır'a tıklayın, Geçerli İstemci IP Adresi'nden IP adresini seçin ve Başlangıç IP Adresi ve Bitiş IP Adresi metin kutularına yapıştırın ve düğmeye
tıklayın.
İstemci IP Adresi Ekleme
İstemci IP Adresi izin verilen IP adresleri listesine eklendikten sonra, değişiklikleri onaylamak için Kaydet'e tıklayın.
Değişiklikleri Onayla
Görev 3 - Web Dağıtımı kullanarak ASP.NET MVC 4 Uygulaması Yayımlama
ASP.NET MVC 4 çözümüne geri dönün. Çözüm Gezgini web sitesi projesine sağ tıklayın ve Yayımla'yı seçin.
Web sitesini yayımlama
İlk göreve kaydettiğiniz yayımlama profilini içeri aktarın.
Yayımlama profilini içeri aktarma
Bağlantıyı Doğrula'ya tıklayın. Doğrulama tamamlandıktan sonra İleri'ye tıklayın.
Not
Bağlantıyı Doğrula düğmesinin yanında yeşil bir onay işareti görüntülendiğinde doğrulama tamamlanır.
Bağlantı doğrulanıyor
Ayarlar sayfasında, Veritabanları bölümünün altında veritabanı bağlantınızın metin kutusunun yanındaki düğmeye (defaultConnection gibi) tıklayın.
Web dağıtımı yapılandırması
Veritabanı bağlantısını aşağıdaki gibi yapılandırın:
Sunucu adı alanına tcp: ön ekini kullanarak SQL Veritabanı sunucu URL'nizi yazın.
Kullanıcı adı alanına sunucu yöneticinizin oturum açma adını yazın.
Parola'ya sunucu yöneticinizin oturum açma parolasını yazın.
Yeni bir veritabanı adı yazın.
Hedef bağlantı dizesi yapılandırma
Daha sonra, Tamam'a tıklayın. Veritabanını oluşturmanız istendiğinde Evet'e tıklayın.
Veritabanını oluşturma
Windows Azure'da SQL Veritabanı bağlanmak için kullanacağınız bağlantı dizesi Varsayılan Bağlantı metin kutusunda gösterilir. İleri seçeneğine tıklayın.
SQL Veritabanı işaret eden bağlantı dizesi
Önizleme sayfasında Yayımla'ya tıklayın.
Web uygulamasını yayımlama
Yayımlama işlemi tamamlandıktan sonra, varsayılan tarayıcınız yayımlanan web sitesini açar.
Ek C: Kod Parçacıklarını Kullanma
Kod parçacıklarıyla ihtiyacınız olan tüm kodlar parmaklarınızın ucundadır. Laboratuvar belgesi, aşağıdaki şekilde gösterildiği gibi bunları tam olarak ne zaman kullanabileceğinizi bildirir.
Projenize kod eklemek için Visual Studio kod parçacıklarını kullanma
Klavye kullanarak kod parçacığı eklemek için (yalnızca C#
- İmleci kodu eklemek istediğiniz yere getirin.
- Kod parçacığı adını yazmaya başlayın (boşluk veya kısa çizgi olmadan).
- IntelliSense'in eşleşen kod parçacıklarının adlarını görüntülemesini izleyin.
- Doğru kod parçacığını seçin (veya kod parçacığının adı seçilene kadar yazmaya devam edin).
- Kod parçacığını imleç konumuna eklemek için Sekme tuşuna iki kez basın.
Kod parçacığı adını yazmaya başlama
Vurgulanan kod parçacığını seçmek için Sekme tuşuna basın
Sekme tuşuna yeniden bastığında kod parçacığı genişler
Fare (C#, Visual Basic ve XML) 1 kullanarak kod parçacığı eklemek için. Kod parçacığını eklemek istediğiniz yere sağ tıklayın.
- Kod Parçacığı Ekle'yi ve ardından Kod Parçacıklarım'ı seçin.
- Listeden, üzerine tıklayarak ilgili kod parçacığını seçin.
Kod parçacığını eklemek istediğiniz yere sağ tıklayın ve Kod Parçacığı Ekle'yi seçin
Listeden ilgili kod parçacığını seçmek için üzerine tıklayın