Entity Framework 4.0 Database First ve ASP.NET 4 Web Forms ile Çalışmaya Başlama - Bölüm 2

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. Öğretici serisi hakkında bilgi için serideki ilk öğreticiye bakın

EntityDataSource Denetimi

Önceki öğreticide bir web sitesi, veritabanı ve veri modeli oluşturdunuz. Bu öğreticide, ASP.NET bir Entity Framework veri modeliyle EntityDataSource çalışmayı kolaylaştırmak için sağladığı denetimle çalışırsınız. Öğrenci verilerini görüntülemek ve düzenlemek için bir GridView denetim, DetailsView yeni öğrenci ekleme denetimi ve DropDownList bölüm seçme denetimi (daha sonra ilişkili kursları görüntülemek için kullanacaksınız) oluşturacaksınız.

Öğrencilerin adlarını, kayıt tarihlerini ve kurslarını içeren Öğrenci Listesi görünümünü gösteren Internet Explorer penceresinin ekran görüntüsü.

Metin alanlarına John Smith'in adı ve kayıt tarihinin doldurulduğu Yeni Öğrenci Ekle görünümünü gösteren Internet Explorer penceresinin ekran görüntüsü.

Departmanlara göre Kurslar görünümünü ve bölümler için açılan menüyü gösteren Internet Explorer penceresinin ekran görüntüsü.

Bu uygulamada, veritabanını güncelleştiren sayfalara giriş doğrulaması eklemeyebileceğinizi ve hata işlemenin bir bölümünün üretim uygulamasında gerekli olduğu kadar sağlam olmayacağını unutmayın. Bu, öğreticinin Entity Framework'e odaklanmasını ve çok uzun sürmesini engeller. Bu özellikleri uygulamanıza ekleme hakkında ayrıntılı bilgi için bkz. ASP.NET Web Sayfalarında Kullanıcı Girişini Doğrulama ve ASP.NET Sayfalar ve Uygulamalarda Hata İşleme.

EntityDataSource Denetimini Ekleme ve Yapılandırma

Varlık kümesindeki People varlıkları okumak Person için bir EntityDataSource denetim yapılandırarak başlayacaksınız.

Visual Studio'nun açık olduğundan ve 1. bölümde oluşturduğunuz projeyle çalıştığınızdan emin olun. Veri modelini oluşturduktan sonra veya bu modelde yaptığınız son değişiklikten sonra projeyi oluşturmadıysanız projeyi şimdi derleyin. Proje oluşturulana kadar veri modelinde yapılan değişiklikler tasarımcının kullanımına sunulmaz.

Ana Sayfa şablonunu kullanarak Web Formu'nu kullanarak yeni bir web sayfası oluşturun ve bunu Students.aspx olarak adlandırın.

Resim23

Ana sayfa olarak Site.Master'i belirtin. Bu öğreticiler için oluşturduğunuz tüm sayfalar bu ana sayfayı kullanır.

Resim24

Kaynak görünümünde, aşağıdaki örnekte gösterildiği gibi adlı Content2denetime bir h2 başlık Content ekleyin:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
   <h2>Student List</h2>
</asp:Content>

Araç Kutusu'nunVeri sekmesinden bir EntityDataSource denetimi sayfaya sürükleyin, başlığın altına bırakın ve kimliği olarak StudentsEntityDataSourcedeğiştirin:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Student List</h2>
    <asp:EntityDataSource ID="StudentsEntityDataSource" runat="server">
    </asp:EntityDataSource>
</asp:Content>

Tasarım görünümüne geçin, veri kaynağı denetiminin akıllı etiketine tıklayın ve ardından Veri Kaynağını Yapılandır'a tıklayarak Veri Kaynağını Yapılandırma sihirbazını başlatın.

Resim01

ObjectContext'i Yapılandır sihirbazı adımında Adlandırılmış Bağlantı değeri olarak Okul Varlıkları'nı ve DefaultContainerName değeri olarak SchoolEntities'ı seçin. Ardından İleri'ye tıklayın.

Görüntü02

Not: Bu noktada aşağıdaki iletişim kutusunu alırsanız, devam etmeden önce projeyi oluşturmanız gerekir.

Resim25

Veri Seçimini Yapılandır adımında EntitySetName değeri olarak Kişiler seçin. Seç'in altında, A ll seç onay kutusunun seçili olduğundan emin olun. Ardından güncelleştirmeyi ve silmeyi etkinleştirmek için seçenekleri belirleyin. İşiniz bittiğinde Son'a tıklayın.

Görüntü03

Veritabanı Kurallarını Silmeye İzin Verecek Şekilde Yapılandırma

Kullanıcıların tablodaki Person öğrencileri silmesini sağlayan ve diğer tablolarla (Course, StudentGradeve OfficeAssignment) üç ilişkisi olan bir sayfa oluşturacaksınız. Varsayılan olarak, veritabanı diğer tablolardan birinde ilişkili satırlar varsa içindeki Person bir satırı silmenizi engeller. önce ilgili satırları el ile silebilir veya bir satırı sildiğinizde veritabanını otomatik olarak silinecek Person şekilde yapılandırabilirsiniz. Bu öğreticideki öğrenci kayıtları için veritabanını ilgili verileri otomatik olarak silecek şekilde yapılandıracaksınız. Öğrencilerin tabloda yalnızca ilişkili satırları olabileceğinden StudentGrade , üç ilişkiden yalnızca birini yapılandırmanız gerekir.

Bu öğreticiyle birlikte projeden indirdiğiniz School.mdf dosyasını kullanıyorsanız, bu yapılandırma değişiklikleri zaten yapıldığından bu bölümü atlayabilirsiniz. Veritabanını bir betik çalıştırarak oluşturduysanız, aşağıdaki yordamları uygulayarak veritabanını yapılandırın.

Sunucu Gezgini'nde, 1. bölümde oluşturduğunuz veritabanı diyagramını açın. ile StudentGrade arasındaki Person ilişkiye (tablolar arasındaki çizgi) sağ tıklayın ve özellikler'i seçin.

Görüntü04

Özellikler penceresinde INSERT ve UPDATE Belirtimi'ni genişletin ve DeleteRule özelliğini Art Arda olarak ayarlayın.

Görüntü05

Diyagramı kaydedin ve kapatın. Veritabanını güncelleştirmek isteyip istemediğiniz sorulursa Evet'e tıklayın.

Modelin bellekteki varlıkları veritabanının yaptıklarıyla eşitlenmiş durumda tuttuğundan emin olmak için veri modelinde ilgili kuralları ayarlamanız gerekir. SchoolModel.edmx dosyasını açın, ile StudentGradearasındaki Person ilişkilendirme satırına sağ tıklayın ve özellikler'i seçin.

Resim21

Özellikler penceresinde End1 OnDelete değerini Art Arda olarak ayarlayın.

Resim22

SchoolModel.edmx dosyasını kaydedip kapatın ve projeyi yeniden derleyin.

Genel olarak, veritabanı değiştiğinde modeli eşitlemeye yönelik birkaç seçeneğiniz vardır:

  • Bazı değişiklik türleri (tablo, görünüm veya saklı yordam ekleme veya yenileme gibi) için tasarımcıya sağ tıklayın ve tasarımcının değişiklikleri otomatik olarak yapması için Veritabanından Modeli Güncelleştir'i seçin.
  • Veri modelini yeniden oluşturma.
  • Bunun gibi el ile güncelleştirmeler yapın.

Bu durumda, modeli yeniden oluşturabilir veya ilişki değişikliğinden etkilenen tabloları yenileyebilirdiniz, ancak sonra alan adı değişikliğini yeniden yapmanız gerekir (öğesinden FirstNameFirstMidNameöğesine).

Varlıkları Okumak ve Güncelleştirmek için GridView Denetimi Kullanma

Bu bölümde, öğrencileri görüntülemek, güncelleştirmek veya silmek için bir GridView denetim kullanacaksınız.

Students.aspx dosyasını açın veya bu görünüme geçin ve Tasarım görünümüne geçin. Araç Kutusu'nunVeri sekmesinde, denetimin sağındaki EntityDataSource bir GridView denetimi sürükleyin, adını verinStudentsGridView, akıllı etikete tıklayın ve veri kaynağı olarak StudentsEntityDataSource öğesini seçin.

Görüntü06

Şemayı Yenile'ye tıklayın (onaylamanız istenirse Evet'e tıklayın), ardından Sayfalandırmayı Etkinleştir, Sıralamayı Etkinleştir, Düzenlemeyi Etkinleştir ve Silmeyi Etkinleştir'e tıklayın.

Sütunları Düzenle'ye tıklayın.

Resim10

Seçili alanlar kutusunda PersonID, LastName ve HireDate alanlarını silin. Normalde kullanıcılara kayıt anahtarı görüntülemezsiniz, işe alma tarihi öğrencilerle ilgili değildir ve adın her iki bölümünü de tek bir alana yerleştirirsiniz, bu nedenle ad alanlarından yalnızca birine ihtiyacınız vardır.)

Resim11

FirstMidName alanını seçin ve ardından Bu alanı TemplateField'e dönüştür'e tıklayın.

Aynı işlemi EnrollmentDate için de yapın.

Resim13

Tamam'a tıklayın ve kaynak görünümüne geçin. Kalan değişikliklerin doğrudan işaretlemede yapılması daha kolay olacaktır. Denetim GridView işaretlemesi artık aşağıdaki örneğe benzer.

<asp:GridView ID="StudentsGridView" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PersonID" 
        DataSourceID="StudentsEntityDataSource">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            <asp:TemplateField HeaderText="FirstMidName" SortExpression="FirstMidName">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("FirstMidName") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("FirstMidName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="EnrollmentDate" SortExpression="EnrollmentDate">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("EnrollmentDate") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("EnrollmentDate") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

Komut alanından sonraki ilk sütun, şu anda adı görüntüleyen bir şablon alanıdır. Bu şablon alanının işaretlemesini aşağıdaki örneğe benzer şekilde değiştirin:

<asp:TemplateField HeaderText="Name" SortExpression="LastName">
                <EditItemTemplate>
                    <asp:TextBox ID="LastNameTextBox" runat="server" Text='<%# Bind("LastName") %>'></asp:TextBox>
                    <asp:TextBox ID="FirstNameTextBox" runat="server" Text='<%# Bind("FirstMidName") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LastNameLabel" runat="server" Text='<%# Eval("LastName") %>'></asp:Label>,
                    <asp:Label ID="FirstNameLabel" runat="server" Text='<%# Eval("FirstMidName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

Görüntüleme modunda, iki Label denetim adı ve soyadını görüntüler. Düzenleme modunda, adı ve soyadını değiştirebilmeniz için iki metin kutusu sağlanır. Görüntüleme modundaki Label denetimlerde olduğu gibi ve Eval ifadelerini de veritabanlarına doğrudan bağlanan ASP.NET veri kaynağı denetimlerinde olduğu gibi kullanırsınızBind. Tek fark, veritabanı sütunları yerine varlık özelliklerini belirtmenizdir.

Son sütun, kayıt tarihini görüntüleyen bir şablon alanıdır. Bu alanın işaretlemesini aşağıdaki örneğe benzer şekilde değiştirin:

<asp:TemplateField HeaderText="Enrollment Date" SortExpression="EnrollmentDate">
                <EditItemTemplate>
                    <asp:TextBox ID="EnrollmentDateTextBox" runat="server" Text='<%# Bind("EnrollmentDate", "{0:d}") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="EnrollmentDateLabel" runat="server" Text='<%# Eval("EnrollmentDate", "{0:d}") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

Hem görüntüleme hem de düzenleme modunda, "{0,d}" biçim dizesi tarihin "kısa tarih" biçiminde görüntülenmesine neden olur. (Bilgisayarınız bu biçimi bu öğreticide gösterilen ekran görüntülerinden farklı görüntüleyecek şekilde yapılandırılmış olabilir.)

Bu şablon alanlarının her birinde tasarımcının varsayılan olarak bir Bind ifade kullandığına, ancak bunu öğelerdeki bir Eval ifadeyle değiştirdiğinize ItemTemplate dikkat edin. İfade, Bind koddaki GridView verilere erişmeniz gerektiğinde verileri denetim özelliklerinde kullanılabilir hale getirir. Bu sayfada kodda bu verilere erişmeniz gerekmez, bu nedenle daha verimli olan öğesini kullanabilirsiniz Eval. Daha fazla bilgi için bkz. Verilerinizi veri denetimlerinden çıkarma.

Performansı Artırmak için EntityDataSource Denetim İşaretlemeyi Düzeltme

Denetimin işaretlemesinde EntityDataSource ve DefaultContainerName özniteliklerini kaldırın ConnectionString ve bunları bir ContextTypeName="ContosoUniversity.DAL.SchoolEntities" öznitelikle değiştirin. Bu, nesne bağlam sınıfında sabit kodlanmış olandan farklı bir bağlantı kullanmanız gerekmediği sürece, her denetim oluşturduğunuzda EntityDataSource yapmanız gereken bir değişikliktir. özniteliğinin ContextTypeName kullanılması aşağıdaki avantajları sağlar:

  • Daha iyi performans. EntityDataSource Denetim ve DefaultContainerName özniteliklerini kullanarak ConnectionString veri modelini başlatırken, her istekte meta verileri yüklemek için ek çalışma gerçekleştirir. Özniteliğini belirtirseniz ContextTypeName bu gerekli değildir.
  • Entity Framework 4.0'da oluşturulan nesne bağlamı sınıflarında (bu öğreticide olduğu gibi SchoolEntities ) yavaş yükleme varsayılan olarak açıktır. Bu, gezinti özelliklerinin ihtiyacınız olduğunda ilgili verilerle otomatik olarak yüklendiği anlamına gelir. Yavaş yükleme, bu öğreticinin ilerleyen bölümlerinde daha ayrıntılı olarak açıklanmıştır.
  • Nesne bağlam sınıfına (bu örnekte sınıf) uyguladığınız tüm özelleştirmeler, SchoolEntities denetimi kullanan EntityDataSource denetimler tarafından kullanılabilir. Nesne bağlam sınıfını özelleştirmek, bu öğretici serisinde ele alınmayan gelişmiş bir konudur. Daha fazla bilgi için bkz. Entity Framework Oluşturulan Türlerini Genişletme.

İşaretlemesi artık aşağıdaki örneğe benzer (özelliklerin sırası farklı olabilir):

<asp:EntityDataSource ID="StudentsEntityDataSource" runat="server"
        ContextTypeName="ContosoUniversity.DAL.SchoolEntities" EnableFlattening="False"
        EntitySetName="People"
        EnableDelete="True" EnableUpdate="True">
    </asp:EntityDataSource>

EnableFlattening Yabancı anahtar sütunları varlık özellikleri olarak sunulmadığından, özniteliği Entity Framework'ün önceki sürümlerinde gerekli olan bir özelliği ifade eder. Geçerli sürüm , yabancı anahtar ilişkilendirmelerinin kullanılmasını mümkün kılar; bu da yabancı anahtar özelliklerinin çoka çok ilişkilendirmeler dışında tümü için kullanıma sunulduğu anlamına gelir. Varlıklarınızda yabancı anahtar özellikleri varsa ve karmaşık türler yoksa, bu özniteliği olarak Falsebırakabilirsiniz. Varsayılan değer olduğundan True, özniteliği işaretlemeden kaldırmayın. Daha fazla bilgi için bkz. Nesneleri Düzleştirme (EntityDataSource).

Sayfayı çalıştırdığınızda öğrencilerin ve çalışanların listesini görürsünüz (sonraki öğreticide yalnızca öğrenciler için filtre uygulayacaksınız). Ad ve soyadı birlikte görüntülenir.

Görüntü07

Görünümü sıralamak için bir sütun adına tıklayın.

Herhangi bir satırda Düzenle'ye tıklayın. Ad ve soyadını değiştirebileceğiniz metin kutuları görüntülenir.

Görüntü08

Sil düğmesi de çalışır. Kayıt tarihi olan ve satır kaybolan bir satır için Sil'e tıklayın. (Kayıt tarihi olmayan satırlar eğitmenleri temsil eder ve bilgi tutarlılığı hatası alabilirsiniz. Sonraki öğreticide bu listeyi yalnızca öğrencileri içerecek şekilde filtreleyeceksiniz.)

Gezinti Özelliğinden Veri Görüntüleme

Şimdi her öğrencinin kaç kursa kayıtlı olduğunu öğrenmek istediğinizi varsayalım. Entity Framework bu bilgileri varlığın StudentGrades gezinti özelliğinde Person sağlar. Veritabanı tasarımı, öğrencinin not atanmadan kursa kaydolmasına izin vermediğinden, bu öğretici için bir kursla ilişkili tablo satırında bir satırın StudentGrade olması, kursa kaydolmakla aynı olduğunu varsayabilirsiniz. Courses(Gezinti özelliği yalnızca eğitmenler içindir.)

Denetimin EntityDataSource özniteliğini ContextTypeName kullandığınızda, bu özelliğe eriştiğiniz zaman Entity Framework bir gezinti özelliğine ilişkin bilgileri otomatik olarak alır. Buna gecikmeli yükleme denir. Ancak bu verimsiz olabilir çünkü her ek bilgi gerektiğinde veritabanına ayrı bir çağrı yapılmasına neden olur. Denetim tarafından EntityDataSource döndürülen her varlık için gezinti özelliğinden verilere ihtiyacınız varsa, veritabanı için tek bir çağrıda varlığın kendisiyle birlikte ilgili verileri almak daha verimlidir. Buna istekli yükleme denir ve denetimin özelliğini EntityDataSource ayarlayarak Include gezinti özelliği için istekli yükleme belirtirsiniz.

Students.aspx'da her öğrenci için ders sayısını göstermek istiyorsunuz, bu nedenle en iyi seçenek istekli yüklemedir. Tüm öğrencileri görüntülüyor ancak yalnızca birkaçı için kursların sayısını gösteriyorsanız (işaretlemeye ek olarak bazı kodlar yazmanız gerekebilir), gecikmeli yükleme daha iyi bir seçim olabilir.

Students.aspx dosyasını açın veya geçiş yapın, Tasarım görünümüne geçin, öğesini seçin StudentsEntityDataSourceve Özellikler penceresinde Include özelliğini StudentGrades olarak ayarlayın. (Birden çok gezinti özelliği almak istiyorsanız, adlarını virgülle ayırarak belirtebilirsiniz; örneğin, StudentGrades, Courses.)

Resim19

Kaynak görünümüne geçin. Denetimde StudentsGridView , son asp:TemplateField öğeden sonra aşağıdaki yeni şablon alanını ekleyin:

<asp:TemplateField HeaderText="Number of Courses">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("StudentGrades.Count") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

İfadesinde Eval gezinti özelliğine StudentGradesbaşvurabilirsiniz. Bu özellik bir koleksiyon içerdiğinden, öğrencinin kayıtlı olduğu ders sayısını görüntülemek için kullanabileceğiniz bir Count özelliği vardır. Sonraki bir öğreticide, koleksiyonlar yerine tek varlıklar içeren gezinti özelliklerindeki verilerin nasıl görüntüleneceğini göreceksiniz. (Gezinti özelliklerindeki verileri görüntülemek için öğeleri kullanamayacağınızı BoundField unutmayın.)

Sayfayı çalıştırdığınızda artık her öğrencinin kaç kursa kayıtlı olduğunu görürsünüz.

Metin alanlarına John Smith'in adı ve kayıt tarihinin doldurulduğu Yeni Öğrenci Ekle görünümünü gösteren Internet Explorer penceresinin ekran görüntüsü.

Varlık Eklemek için DetailsView Denetimi Kullanma

Sonraki adım, yeni öğrenciler eklemenize olanak sağlayan bir denetime sahip bir DetailsView sayfa oluşturmaktır. Tarayıcıyı kapatın ve Site.Master ana sayfasını kullanarak yeni bir web sayfası oluşturun. Sayfaya StudentsAdd.aspx adını verin ve Kaynak görünümüne geçin.

adlı Content2denetimin mevcut işaretlemesini değiştirmek için aşağıdaki işaretlemeyi Content ekleyin:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Add New Students</h2>
    <asp:EntityDataSource ID="StudentsEntityDataSource" runat="server"
        ContextTypeName="ContosoUniversity.DAL.SchoolEntities" EnableFlattening="False"
        EnableInsert="True" EntitySetName="People">
    </asp:EntityDataSource>
    <asp:DetailsView ID="StudentsDetailsView" runat="server" 
        DataSourceID="StudentsEntityDataSource" AutoGenerateRows="False"
        DefaultMode="Insert">
        <Fields>
            <asp:BoundField DataField="FirstMidName" HeaderText="First Name" 
                SortExpression="FirstMidName" />
            <asp:BoundField DataField="LastName" HeaderText="Last Name" 
                SortExpression="LastName" />
            <asp:BoundField DataField="EnrollmentDate" HeaderText="Enrollment Date" 
                SortExpression="EnrollmentDate" />
             <asp:CommandField ShowInsertButton="True" />
       </Fields>
    </asp:DetailsView>
</asp:Content>

Bu işaretleme, Students.aspx dosyasında oluşturduğunuz denetime benzer bir EntityDataSource denetim oluşturur, ancak eklemeye olanak tanır. Denetimde GridView olduğu gibi, denetimin ilişkili alanları da varlık özelliklerine DetailsView başvurmaları dışında doğrudan veritabanına bağlanan bir veri denetimi için olduğu gibi kodlanmıştır. Bu durumda, DetailsView denetim yalnızca satır eklemek için kullanılır, bu nedenle varsayılan modu olarak Insertayarlamış olursunuz.

Sayfayı çalıştırın ve yeni bir öğrenci ekleyin.

Metin alanlarına John Smith'in adı ve kayıt tarihinin doldurulduğu Yeni Öğrenci Ekle görünümünü gösteren Internet Explorer penceresinin ekran görüntüsü.

Yeni öğrenci ekledikten sonra hiçbir şey olmaz, ancak students.aspx dosyasını çalıştırırsanız yeni öğrenci bilgilerini görürsünüz.

Drop-Down Listesinde Verileri Görüntüleme

Aşağıdaki adımlarda, bir denetimi kullanarak bir DropDownList varlık kümesine veri bağlamanız EntityDataSource gerekir. Öğreticinin bu bölümünde, bu listeyle pek bir şey yapmayacaksınız. Ancak sonraki bölümlerde, kullanıcıların bölümle ilişkili kursları görüntülemek üzere bir bölüm seçmesine izin vermek için listeyi kullanacaksınız.

Courses.aspx adlı yeni bir web sayfası oluşturun. Kaynak görünümünde, denetime Content adlı Content2bir başlık ekleyin:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Courses by Department</h2>
</asp:Content>

Tasarım görünümünde, sayfaya daha önce yaptığınız gibi bir EntityDataSource denetim ekleyin, ancak bu kez olarak adlandırınDepartmentsEntityDataSource. EntitySetName değeri olarak Departmanlar'ı seçin ve yalnızca DepartmentID ve Name özelliklerini seçin.

Resim15

Araç Kutusu'nunStandart sekmesinden bir DropDownList denetimi sayfaya sürükleyin, adlandırınDepartmentsDropDownList, akıllı etikete tıklayın ve Veri Kaynağı Seç'i seçerek DataSource Yapılandırma Sihirbazı'nı başlatın.

Resim16

Veri Kaynağı Seçin adımında Veri kaynağı olarak DepartmanlarEntityDataSource'u seçin, Şemayı Yenile'ye tıklayın ve görüntülenecek veri alanı olarak Ad'ı ve değer veri alanı olarak DepartmentID'yi seçin. Tamam'a tıklayın.

Resim17

Entity Framework kullanarak denetimi veri bağlamada kullandığınız yöntem, varlıkları ve varlık özelliklerini belirtmeniz dışında diğer ASP.NET veri kaynağı denetimleriyle aynıdır.

Kaynak görünümüne geçin ve denetimin hemen önüne DropDownList "Bölüm seçin:" ifadesini ekleyin.

Select a department:
    <asp:DropDownList ID="DropDownList1" runat="server" 
        DataSourceID="EntityDataSource1" DataTextField="Name" 
        DataValueField="DepartmentID">
    </asp:DropDownList>

Anımsatıcı olarak, ve DefaultContainerName özniteliklerini bir ContextTypeName="ContosoUniversity.DAL.SchoolEntities" öznitelikle değiştirerek bu noktada denetimin işaretlemesini EntityDataSourceConnectionString değiştirin. Denetim işaretlemesini değiştirmeden EntityDataSource önce, veri kaynağı denetimine bağlı veri bağlı denetimi oluşturana kadar beklemeniz genellikle en iyisidir, çünkü değişikliği yaptıktan sonra tasarımcı size veriye bağlı denetimde Şemayı Yenile seçeneğini sağlamaz.

Sayfayı çalıştırdığınızda açılan listeden bir bölüm seçebilirsiniz.

Departmanlar için açılan menü içeren Bölüme Göre Kurslar görünümünü gösteren Internet Explorer tarayıcı penceresinin ekran görüntüsü.

Bu, denetimi kullanmaya giriş işlemini EntityDataSource tamamlar. Bu denetimle çalışmak genellikle diğer ASP.NET veri kaynağı denetimleriyle çalışmaktan farklı değildir; tek farkı, tablolar ve sütunlar yerine varlıklara ve özelliklere başvurmanızdır. Tek özel durum, gezinti özelliklerine erişmek istemenizdir. Sonraki öğreticide, denetimle EntityDataSource kullandığınız söz diziminin verileri filtrelediğinizde, gruplandırdığınızda ve sıraladığınızda diğer veri kaynağı denetimlerinden de farklı olabileceğini göreceksiniz.