Entity Framework 4.0 Database First ile Çalışmaya Başlama ve ASP.NET 4 Web Forms
tarafından Tom Dykstra
Contoso University örnek web uygulaması, Entity Framework 4.0 ve Visual Studio 2010 kullanarak ASP.NET Web Forms uygulamaları oluşturmayı gösterir. Örnek uygulama, kurgusal bir Contoso Üniversitesi'nin web sitesidir. Öğrenci kabulü, kurs oluşturma ve eğitmen ödevleri gibi işlevleri içerir.
Öğreticide C# dilinde örnekler gösterilir. İndirilebilir örnek hem C# hem de Visual Basic'te kod içerir.
Önce Veritabanı
Entity Framework'teki verilerle çalışmanın üç yolu vardır: Önce Veritabanı, Önce Model ve Kod önce. Bu öğretici, Önce Veritabanı'nın öğreticisi içindir. Bu iş akışları arasındaki farklar hakkında bilgi edinmek ve senaryonuz için en iyi iş akışını seçme yönergeleri için bkz . Entity Framework Geliştirme İş Akışları.
Web Forms
Bu öğretici serisi ASP.NET Web Forms modelini kullanır ve Visual Studio'da ASP.NET Web Forms nasıl çalışabileceğinizi bildiğinizi varsayar. Kullanmıyorsanız bkz. ASP.NET 4.5 Web Forms Kullanmaya Başlama. ASP.NET MVC çerçevesiyle çalışmayı tercih ediyorsanız bkz. ASP.NET MVC kullanarak Entity Framework ile Çalışmaya Başlama.
Yazılım sürümleri
Öğreticide gösterilmiştir Ayrıca ile de çalışır Windows 7 Windows 8 Visual Studio 2010 Web için Visual Studio 2010 Express. Öğretici, Visual Studio'nun sonraki sürümleriyle test edilmedi. Menü seçimlerinde, iletişim kutularında ve şablonlarda birçok farklılık vardır. .NET 4 .NET 4.5, .NET 4 ile geriye dönük olarak uyumludur, ancak öğretici .NET 4.5 ile test edilmemiştir. Entity Framework 4 Öğretici, Entity Framework'ün sonraki sürümleriyle test edilmedi. Entity Framework 5'den başlayarak EF, EF 4.1 ile sunulanı varsayılan olarak DbContext API
kullanır. EntityDataSource denetimi API'yiObjectContext
kullanacak şekilde tasarlanmıştır. EntityDataSource denetimini API ileDbContext
kullanma hakkında bilgi için bu blog gönderisine bakın.Sorular
Öğreticiyle doğrudan ilgili olmayan sorularınız varsa bunları ASP.NET Entity Framework forumu, Entity Frameworkve LINQ to Entities forumu veya StackOverflow.com gönderebilirsiniz.
Genel Bakış
Bu öğreticilerde oluşturacağın uygulama basit bir üniversite web sitesidir.
Kullanıcılar öğrenci, kurs ve eğitmen bilgilerini görüntüleyebilir ve güncelleştirebilir. Oluşturacağınız ekranlardan birkaçı aşağıda gösterilmiştir.
Web Uygulaması Oluşturma
Öğreticiyi başlatmak için Visual Studio'yu açın ve ASP.NET Web Uygulaması şablonunu kullanarak yeni bir ASP.NET Web Uygulaması Projesi oluşturun:
Bu şablon, zaten bir stil sayfası ve ana sayfalar içeren bir web uygulaması projesi oluşturur:
Site.Master dosyasını açın ve "ASP.NET Uygulamam"ı "Contoso Üniversitesi" olarak değiştirin.
<h1>
Contoso University
</h1>
adlı NavigationMenu
Menü denetimini bulun ve aşağıdaki işaretlemeyle değiştirin. Bu işaretleme, oluşturacağın sayfalar için menü öğelerini ekler.
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
<asp:MenuItem NavigateUrl="~/Students.aspx" Text="Students">
<asp:MenuItem NavigateUrl="~/StudentsAdd.aspx" Text="Add Students" />
</asp:MenuItem>
<asp:MenuItem NavigateUrl="~/Courses.aspx" Text="Courses">
<asp:MenuItem NavigateUrl="~/CoursesAdd.aspx" Text="Add Courses" />
</asp:MenuItem>
<asp:MenuItem NavigateUrl="~/Instructors.aspx" Text="Instructors">
<asp:MenuItem NavigateUrl="~/InstructorsCourses.aspx" Text="Course Assignments" />
<asp:MenuItem NavigateUrl="~/OfficeAssignments.aspx" Text="Office Assignments" />
</asp:MenuItem>
<asp:MenuItem NavigateUrl="~/Departments.aspx" Text="Departments">
<asp:MenuItem NavigateUrl="~/DepartmentsAdd.aspx" Text="Add Departments" />
</asp:MenuItem>
</Items>
</asp:Menu>
Default.aspx sayfasını açın ve adlı denetimi şu şekilde BodyContent
değiştirinContent
:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
Welcome to Contoso University!
</h2>
</asp:Content>
Şimdi oluşturabileceğiniz çeşitli sayfaların bağlantılarını içeren basit bir giriş sayfanız var:
Veritabanı Oluşturma
Bu öğreticiler için Entity Framework veri modeli tasarımcısını kullanarak mevcut bir veritabanını (genellikle veritabanı öncelikli yaklaşım olarak adlandırılır) temel alan veri modelini otomatik olarak oluşturacaksınız. Bu öğretici serisinde ele alınmayan bir alternatif, veri modelini el ile oluşturmak ve ardından tasarımcının veritabanını oluşturan betikler oluşturmasını sağlamaktır ( model öncelikli yaklaşım).
Bu öğreticide kullanılan ilk veritabanı yöntemi için bir sonraki adım siteye veritabanı eklemektir. En kolay yol, önce bu öğreticiyle birlikte gelen projeyi indirmektir. Ardından App_Data klasörüne sağ tıklayın, Var Olan Öğe Ekle'yi seçin ve indirilen projeden School.mdf veritabanı dosyasını seçin.
Alternatif olarak , Okul Örnek Veritabanını Oluşturma başlığı altındaki yönergeleri izleyebilirsiniz. Veritabanını indirin veya oluşturun, aşağıdaki klasörden School.mdf dosyasını uygulamanızın App_Data klasörüne kopyalayın:
%PROGRAMFILES%\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA
(.mdf dosyasının bu konumu, SQL Server 2008 Express kullandığınızı varsayar.)
Veritabanını bir betikten oluşturursanız, veritabanı diyagramı oluşturmak için aşağıdaki adımları uygulayın:
Sunucu Gezgini'ndeVeri Bağlantıları'nı genişletin, School.mdf'yi genişletin, Veritabanı Diyagramları'na sağ tıklayın ve Yeni Diyagram Ekle'yi seçin.
Tüm tabloları seçin ve Ekle'ye tıklayın.
SQL Server tabloları, tablolardaki sütunları ve tablolar arasındaki ilişkileri gösteren bir veritabanı diyagramı oluşturur. Tabloları istediğiniz gibi düzenlemek için taşıyabilirsiniz.
Diyagramı "SchoolDiagram" olarak kaydedin ve kapatın.
Bu öğreticiye uygun School.mdf dosyasını indirirseniz, Sunucu Gezgini'ndeVeritabanı Diyagramları'nın altında SchoolDiagram'a çift tıklayarak veritabanı diyagramını görüntüleyebilirsiniz.
Diyagram şuna benzer (tablolar burada gösterilenden farklı konumlarda olabilir):
Entity Framework Veri Modeli Oluşturma
Artık bu veritabanından bir Entity Framework veri modeli oluşturabilirsiniz. Veri modelini uygulamanın kök klasöründe oluşturabilirsiniz, ancak bu öğretici için DAL adlı bir klasöre yerleştireceksiniz (Veri Erişim Katmanı için).
Çözüm Gezginidal adlı bir proje klasörü ekleyin (çözümün altında değil projenin altında olduğundan emin olun).
DAL klasörüne sağ tıklayın ve Ekle ve Yeni Öğe'yi seçin. Yüklü Şablonlar'ın altında Veri'yi seçin, ADO.NET Varlık Veri Modeli şablonunu seçin, SchoolModel.edmx olarak adlandırın ve ekle'ye tıklayın.
Bu işlem Varlık Veri Modeli Sihirbazı'nı başlatır. İlk sihirbaz adımında, Veritabanından oluştur seçeneği varsayılan olarak seçilidir. İleri’ye tıklayın.
Veri Bağlantınızı Seçin adımında varsayılan değerleri bırakın ve İleri'ye tıklayın. Okul veritabanı varsayılan olarak seçilidir ve bağlantı ayarı Web.config dosyasına SchoolEntities olarak kaydedilir.
Veritabanı Nesnelerinizi Seçin sihirbazı adımında, dışındaki sysdiagrams
tüm tabloları seçin (daha önce oluşturduğunuz diyagram için oluşturulmuştur) ve ardından Son'a tıklayın.
Modeli oluşturmayı tamamladıktan sonra Visual Studio, veritabanı tablolarınıza karşılık gelen Entity Framework nesnelerinin (varlıklar) grafik bir gösterimini gösterir. (Veritabanı diyagramında olduğu gibi, tek tek öğelerin konumu bu çizimde gördüklerinizden farklı olabilir. İsterseniz öğeleri çizimle eşleşecek şekilde sürükleyebilirsiniz.)
Entity Framework Veri Modelini Keşfetme
Varlık diyagramının veritabanı diyagramına çok benzediğini ve birkaç farklılık olduğunu görebilirsiniz. Bir fark, ilişkilendirme türünü belirten her ilişkilendirmenin sonuna simgelerin eklenmesidir (tablo ilişkileri, veri modelinde varlık ilişkilendirmeleri olarak adlandırılır):
Bire sıfıra veya bir ilişkisi "1" ve "0..1" ile temsil edilir.
Bu durumda, bir varlık bir
Person
varlıklaOfficeAssignment
ilişkilendirilebilir veya ilişkilendirilmeyebilir. Varlık birOfficeAssignment
Person
varlıkla ilişkilendirilmelidir. Başka bir deyişle, bir eğitmen bir ofise atanabilir veya atanamayabilir ve herhangi bir ofis yalnızca bir eğitmene atanabilir.Bire çok ilişkisi "1" ve "*" ile temsil edilir.
Bu durumda, bir
Person
varlık ilişkiliStudentGrade
varlıklara sahip olabilir veya olmayabilir. VarlıkStudentGrade
birPerson
varlıkla ilişkilendirilmelidir.StudentGrade
varlıklar aslında bu veritabanında kayıtlı kursları temsil eder; Öğrenci bir kursa kayıtlıysa ve henüz not yoksa,Grade
özellik null olur. Başka bir deyişle, bir öğrenci henüz hiçbir kursa kayıtlı olmayabilir, bir kursa kaydolabilir veya birden çok kursa kaydolabilir. Kayıtlı kurstaki her not yalnızca bir öğrenci için geçerlidir.Çoka çok ilişkilendirmesi "*" ve "*" ile temsil edilir.
Bu durumda, bir
Person
varlık ilişkiliCourse
varlıklara sahip olabilir veya olmayabilir ve bunun tersi de geçerlidir: birCourse
varlık ilişkiliPerson
varlıklara sahip olabilir veya olmayabilir. Başka bir deyişle, bir eğitmen birden çok ders verebilir ve bir kurs birden çok eğitmen tarafından öğretilebilir. (Bu veritabanında bu ilişki yalnızca eğitmenler için geçerlidir; öğrencileri kurslara bağlamaz. Öğrenciler StudentGrades tablosu tarafından kurslara bağlanır.)
Veritabanı diyagramı ile veri modeli arasındaki bir diğer fark, her varlık için ek Gezinti Özellikleri bölümüdür. Bir varlığın gezinti özelliği ilgili varlıklara başvurur. Örneğin, bir varlıktaki Courses
özelliği, bu varlıkla ilgili Person
tüm Course
varlıkların koleksiyonunu içerir.Person
Veritabanı ile veri modeli arasındaki bir diğer fark da ve tablolarını çoka çok ilişkisinde bağlamak için veritabanında kullanılan ilişkilendirme tablosunun Person
Course
olmamasıdırCourseInstructor
. Gezinti özellikleri varlıktan ilgili varlıkları ve varlıktan Person
Course
ilgili Course
Person
varlıkları almanıza olanak tanır, bu nedenle veri modelindeki ilişkilendirme tablosunu temsil etmeniz gerekmez.
Bu öğreticide, tablonun sütununun Person
aslında hem kişinin adını hem de ikinci adını içerdiğini varsayalımFirstName
. Alanın adını bunu yansıtacak şekilde değiştirmek istiyorsunuz, ancak veritabanı yöneticisi (DBA) veritabanını değiştirmek istemeyebilir. Veri modelindeki özelliğin FirstName
adını değiştirebilir ve veritabanı eşdeğerini değiştirmeden bırakabilirsiniz.
Tasarımcıda varlıkta FirstName'e sağ tıklayın ve yeniden adlandır'ıPerson
seçin.
Yeni adı "FirstMidName" yazın. Bu, veritabanını değiştirmeden koddaki sütuna başvurma şeklinizi değiştirir.
Model tarayıcısı veritabanı yapısını, veri modeli yapısını ve bunlar arasındaki eşlemeyi görüntülemek için başka bir yol sağlar. Bunu görmek için varlık tasarımcısında boş bir alana sağ tıklayın ve ardından Model Tarayıcısı'na tıklayın.
Model Tarayıcısı bölmesinde bir ağaç görünümü görüntülenir. (Model Tarayıcısı bölmesi Çözüm Gezgini bölmesine yerleştirilmiş olabilir.) SchoolModel düğümü veri modeli yapısını, SchoolModel.Store düğümü ise veritabanı yapısını temsil eder.
Tabloları görmek için SchoolModel.Store genişletin, tabloları görmek için Tablolar/Görünümler'i genişletin ve ardından tablo içindeki sütunları görmek için Kurs'u genişletin.
SchoolModel'i genişletin, Varlık Türleri'ni genişletin ve ardından varlıkları ve varlıkların içindeki özellikleri görmek için Kurs düğümünü genişletin.
Tasarımcıda veya Model Tarayıcısı bölmesinde Entity Framework'ün iki modelin nesnelerini nasıl ilişkilendirdiğini görebilirsiniz. Varlığa Person
sağ tıklayın ve Tablo Eşlemesi'ni seçin.
Bu işlem , Eşleme Ayrıntıları penceresini açar. Bu pencerenin veritabanı sütununun FirstName
veri modelinde olarak yeniden adlandırdığınız ile eşlendiğini FirstMidName
görmenize olanak tanır.
Entity Framework, veritabanı, veri modeli ve bunlar arasındaki eşlemeler hakkındaki bilgileri depolamak için XML kullanır. SchoolModel.edmx dosyası aslında bu bilgileri içeren bir XML dosyasıdır. Tasarımcı bilgileri grafik biçiminde işler, ancak Çözüm Gezgini'da .edmx dosyasına sağ tıklayıp Birlikte Aç'a tıklayıp XML (Metin) Düzenleyicisi'ni seçerek de dosyayı XML olarak görüntüleyebilirsiniz. (Veri modeli tasarımcısı ve XML düzenleyicisi aynı dosyayı açmanın ve bu dosyayla çalışmanın yalnızca iki farklı yolu olduğundan, tasarımcının dosyayı aynı anda xml düzenleyicisinde açmasını ve açmasını sağlayamazsınız.)
Şimdi bir web sitesi, veritabanı ve veri modeli oluşturdunuz. Sonraki kılavuzda veri modelini ve ASP.NET EntityDataSource
denetimini kullanarak verilerle çalışmaya başlayacaksınız.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin