Aracılığıyla paylaş


Öğretici: MVC 5 kullanarak EF Database First kullanmaya başlama

MVC, Entity Framework ve ASP.NET yapı iskelesini kullanarak, var olan bir veritabanına arabirim sağlayan bir web uygulaması oluşturabilirsiniz. Bu öğretici serisi, kullanıcıların bir veritabanı tablosunda bulunan verileri görüntülemesine, düzenlemesine, oluşturmasına ve silmesine olanak tanıyan kodu otomatik olarak nasıl oluşturabileceğinizi gösterir. Oluşturulan kod, veritabanı tablosundaki sütunlara karşılık gelir. Serinin son bölümünde, doğrulama gereksinimlerini belirtmek ve biçimlendirmeyi görüntülemek için veri modeline veri ek açıklamaları eklemeyi öğreneceksiniz. İşiniz bittiğinde, .NET uygulamasını ve SQL veritabanını Azure App Service dağıtmayı öğrenmek için bir Azure makalesine ilerleyebilirsiniz.

Bu öğreticide, mevcut bir veritabanıyla çalışmaya başlama ve kullanıcıların verilerle etkileşim kurmasını sağlayan bir web uygulamasını hızlı bir şekilde oluşturma gösterilmektedir. Web uygulamasını derlemek için Entity Framework 6 ve MVC 5'i kullanır. ASP.NET yapı iskelesi özelliği, verileri görüntülemek, güncelleştirmek, oluşturmak ve silmek için otomatik olarak kod oluşturmanıza olanak tanır. Visual Studio'da yayımlama araçlarını kullanarak siteyi ve veritabanını Azure'a kolayca dağıtabilirsiniz.

Serinin bu bölümü veritabanı oluşturmaya ve bunu verilerle doldurmaya odaklanır.

Bu dizi Tom Dykstra ve Rick Anderson'ın katkılarıyla yazılmıştır. Açıklamalar bölümündeki kullanıcılardan gelen geri bildirimlere göre geliştirilmiştir.

Bu öğreticide şunları yaptınız:

  • Veritabanını ayarlama

Önkoşullar

Visual Studio 2017

Veritabanını ayarlama

Var olan bir veritabanına sahip olma ortamını taklit etmek için önce önceden doldurulmuş bazı verileri içeren bir veritabanı oluşturacak ve ardından veritabanına bağlanan web uygulamanızı oluşturacaksınız.

Bu öğretici, Visual Studio 2017 ile LocalDB kullanılarak geliştirilmiştir. LocalDB yerine var olan bir veritabanı sunucusunu kullanabilirsiniz, ancak Visual Studio sürümünüze ve veritabanı türünüze bağlı olarak, Visual Studio'daki tüm veri araçları desteklenmeyebilir. Araçlar veritabanınız için kullanılamıyorsa veritabanınızın yönetim paketinde veritabanına özgü adımlardan bazılarını gerçekleştirmeniz gerekebilir.

Visual Studio sürümünüzdeki veritabanı araçlarıyla ilgili bir sorun varsa veritabanı araçlarının en son sürümünü yüklediğinizden emin olun. Veritabanı araçlarını güncelleştirme veya yükleme hakkında bilgi için bkz. Microsoft SQL Server Veri Araçları.

Visual Studio'yu başlatın ve bir SQL Server Veritabanı Projesi oluşturun. Projeyi ContosoUniversityData olarak adlandırın.

veritabanı projesi oluşturma

Artık boş bir veritabanı projeniz var. Bu veritabanını Azure'a dağıtabileceğinizden emin olmak için Azure SQL Veritabanı'nı projenin hedef platformu olarak ayarlayacaksınız. Hedef platformun ayarlanması aslında veritabanını dağıtmaz; yalnızca veritabanı projesinin veritabanı tasarımının hedef platformla uyumlu olduğunu doğrulayacak olduğu anlamına gelir. Hedef platformu ayarlamak için projenin Özellikler'ini açın ve hedef platform için Microsoft Azure SQL Veritabanı seçin.

Tabloları tanımlayan SQL betikleri ekleyerek bu öğretici için gereken tabloları oluşturabilirsiniz. Projenize sağ tıklayın ve yeni bir öğe ekleyin. Tablolar ve Görünümler>Tablosu'nu seçip Öğrenci olarak adlandırabilirsiniz.

Tablo dosyasında T-SQL komutunu aşağıdaki kodla değiştirerek tabloyu oluşturun.

CREATE TABLE [dbo].[Student] (
    [StudentID]      INT           IDENTITY (1, 1) NOT NULL,
    [LastName]       NVARCHAR (50) NULL,
    [FirstName]      NVARCHAR (50) NULL,
    [EnrollmentDate] DATETIME      NULL,
    PRIMARY KEY CLUSTERED ([StudentID] ASC)
)

Tasarım penceresinin kodla otomatik olarak eşitlendiğini göreceksiniz. Kod veya tasarımcı ile çalışabilirsiniz.

kodu ve tasarımı göster

Başka bir tablo ekleyin. Bu kez bunu Course olarak adlandırın ve aşağıdaki T-SQL komutunu kullanın.

CREATE TABLE [dbo].[Course] (
    [CourseID] INT           IDENTITY (1, 1) NOT NULL,
    [Title]    NVARCHAR (50) NULL,
    [Credits]  INT           NULL,
    PRIMARY KEY CLUSTERED ([CourseID] ASC)
)

Kayıt adlı bir tablo oluşturmak için bir kez daha tekrarlayın.

CREATE TABLE [dbo].[Enrollment] (
    [EnrollmentID] INT IDENTITY (1, 1) NOT NULL,
    [Grade]        DECIMAL(3, 2) NULL,
    [CourseID]     INT NOT NULL,
    [StudentID]    INT NOT NULL,
    PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
    CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID]) 
        REFERENCES [dbo].[Course] ([CourseID]) ON DELETE CASCADE,
    CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID]) 
        REFERENCES [dbo].[Student] ([StudentID]) ON DELETE CASCADE
)

Veritabanı dağıtıldıktan sonra çalıştırılan bir betik aracılığıyla veritabanınızı verilerle doldurabilirsiniz. Projeye Dağıtım Sonrası Betiği ekleyin. Projenize sağ tıklayın ve yeni bir öğe ekleyin. Dağıtım Sonrası Kullanıcı Betikleri>Betiği'ne tıklayın. Varsayılan adı kullanabilirsiniz.

Dağıtım sonrası betiğine aşağıdaki T-SQL kodunu ekleyin. Bu betik, eşleşen kayıt bulunamadığında veritabanına veri ekler. Veritabanına girmiş olabileceğiniz hiçbir verinin üzerine yazılmaz veya silinmez.

MERGE INTO Course AS Target 
USING (VALUES 
        (1, 'Economics', 3), 
        (2, 'Literature', 3), 
        (3, 'Chemistry', 4)
) 
AS Source (CourseID, Title, Credits) 
ON Target.CourseID = Source.CourseID 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (Title, Credits) 
VALUES (Title, Credits);

MERGE INTO Student AS Target
USING (VALUES 
        (1, 'Tibbetts', 'Donnie', '2013-09-01'), 
        (2, 'Guzman', 'Liza', '2012-01-13'), 
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);

MERGE INTO Enrollment AS Target
USING (VALUES 
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);

Dağıtım sonrası betiğin veritabanı projenizi her dağıttığınızda çalıştırıldığını unutmayın. Bu nedenle, bu betiği yazarken gereksinimlerinizi dikkatle değerlendirmeniz gerekir. Bazı durumlarda, proje her dağıtıldığında bilinen bir veri kümesinden yeniden başlamak isteyebilirsiniz. Diğer durumlarda, mevcut verileri herhangi bir şekilde değiştirmek istemeyebilirsiniz. Gereksinimlerinize bağlı olarak, dağıtım sonrası betiğine mi yoksa betike ne eklemeniz gerektiğine karar vekleyebilirsiniz. Veritabanınızı dağıtım sonrası betikle doldurma hakkında daha fazla bilgi için bkz. SQL Server Veritabanı Projesine Veri Ekleme.

Artık 4 SQL betik dosyanız var ancak gerçek tablonuz yok. Veritabanı projenizi localdb'ye dağıtmaya hazırsınız. Visual Studio'da, veritabanı projenizi derlemek ve dağıtmak için Başlangıç düğmesine (veya F5'e) tıklayın. Derleme ve dağıtımın başarılı olduğunu doğrulamak için Çıkış sekmesini denetleyin.

Yeni veritabanının oluşturulduğunu görmek için SQL Server Nesne Gezgini açın ve projenin adını doğru yerel veritabanı sunucusunda (bu durumda (localdb)\ProjectsV13) arayın.

Tabloların verilerle doldurulduğunu görmek için bir tabloya sağ tıklayın ve Verileri Görüntüle'yi seçin.

tablo verilerini göster

Tablo verilerinin düzenlenebilir bir görünümü görüntülenir. Örneğin , Tablolar>dbo.course>Verileri Görüntüle'yi seçerseniz üç sütunlu (Kurs, Başlık ve Krediler) ve dört satırlı bir tablo görürsünüz.

Ek kaynaklar

Code First geliştirmesinin giriş niteliğindeki bir örneği için bkz. ASP.NET MVC 5 ile Çalışmaya Başlama. Daha gelişmiş bir örnek için bkz . ASP.NET MVC 4 Uygulaması için Entity Framework Veri Modeli Oluşturma.

Hangi Entity Framework yaklaşımının kullanılacağını seçme konusunda rehberlik için bkz . Entity Framework Geliştirme Yaklaşımları.

Sonraki adımlar

Bu öğreticide şunları yaptınız:

  • Veritabanını ayarlama

Web uygulamasını ve veri modellerini oluşturmayı öğrenmek için sonraki öğreticiye ilerleyin.