Entity Framework 4,0 Database First ve ASP.NET 4 Web Forms-Bölüm 8 ' i kullanmaya başlamaGetting Started with Entity Framework 4.0 Database First and ASP.NET 4 Web Forms - Part 8

Tom Dykstra tarafındanby Tom Dykstra

Contoso Üniversitesi örnek Web uygulaması, 4,0 ve Visual Studio 2010 Entity Framework kullanarak nasıl ASP.NET Web Forms uygulamalar oluşturacağınızı gösterir.The Contoso University sample web application demonstrates how to create ASP.NET Web Forms applications using the Entity Framework 4.0 and Visual Studio 2010. Öğretici serisi hakkında daha fazla bilgi için, serideki ilk öğreticiye bakınFor information about the tutorial series, see the first tutorial in the series

Verileri biçimlendirmek ve doğrulamak için dinamik veri Işlevselliğini kullanmaUsing Dynamic Data Functionality to Format and Validate Data

Önceki öğreticide saklı yordamları uyguladık.In the previous tutorial you implemented stored procedures. Bu öğreticide, dinamik veri işlevlerinin aşağıdaki avantajları nasıl sağlayabilmesinin nasıl yapılacağı gösterilmektedir:This tutorial will show you how Dynamic Data functionality can provide the following benefits:

  • Alanlar, veri türlerine göre görüntülenmek üzere otomatik olarak biçimlendirilir.Fields are automatically formatted for display based on their data type.
  • Alanlar, veri türlerine göre otomatik olarak onaylanır.Fields are automatically validated based on their data type.
  • Biçimlendirme ve doğrulama davranışını özelleştirmek için veri modeline meta veri ekleyebilirsiniz.You can add metadata to the data model to customize formatting and validation behavior. Bunu yaptığınızda, biçimlendirme ve doğrulama kurallarını tek bir yerde ekleyebilirsiniz ve dinamik veri denetimleri kullanarak alanlara her yerden eriştiğinizde otomatik olarak uygulanır.When you do this, you can add the formatting and validation rules in just one place, and they're automatically applied everywhere you access the fields using Dynamic Data controls.

Bunun nasıl çalıştığını görmek için, var olan öğrenciler. aspx sayfasındaki alanları görüntülemek ve düzenlemek için kullandığınız denetimleri değiştireceksiniz ve Student varlık türünün ad ve Tarih alanlarına biçimlendirme ve doğrulama meta verileri ekleyeceksiniz.To see how this works, you'll change the controls you use to display and edit fields in the existing Students.aspx page, and you'll add formatting and validation metadata to the name and date fields of the Student entity type.

Image01Image01

DynamicField ve DynamicControl denetimleri kullanmaUsing DynamicField and DynamicControl Controls

Öğrenciler. aspx sayfasını açın ve StudentsGridView denetiminde ad ve kayıt tarihi TemplateField öğelerini aşağıdaki biçimlendirme ile değiştirin:Open the Students.aspx page and in the StudentsGridView control replace the Name and Enrollment Date TemplateField elements with the following markup:

<asp:TemplateField HeaderText="Name" SortExpression="LastName">
                <EditItemTemplate>
                    <asp:DynamicControl ID="LastNameTextBox" runat="server" DataField="LastName" Mode="Edit" />
                    <asp:DynamicControl ID="FirstNameTextBox" runat="server" DataField="FirstMidName" Mode="Edit" />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:DynamicControl ID="LastNameLabel" runat="server" DataField="LastName" Mode="ReadOnly" />,
                    <asp:DynamicControl ID="FirstNameLabel" runat="server" DataField="FirstMidName" Mode="ReadOnly" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:DynamicField DataField="EnrollmentDate" HeaderText="Enrollment Date" SortExpression="EnrollmentDate" />

Bu biçimlendirme, öğrenci adı şablonu alanında TextBox ve Label denetimlerinin yerine DynamicControl denetimleri kullanır ve kayıt tarihi için bir DynamicField denetimi kullanır.This markup uses DynamicControl controls in place of TextBox and Label controls in the student name template field, and it uses a DynamicField control for the enrollment date. Biçim dizesi belirtilmedi.No format strings are specified.

StudentsGridView denetiminden sonra ValidationSummary denetimi ekleyin.Add a ValidationSummary control after the StudentsGridView control.

<asp:ValidationSummary ID="StudentsValidationSummary" runat="server" ShowSummary="true"
        DisplayMode="BulletList" Style="color: Red" />

SearchGridView denetiminde, ad ve kayıt tarihi sütunlarının işaretlemesini, StudentsGridView denetiminde yaptığınız gibi değiştirin, ancak EditItemTemplate öğesini atlayın.In the SearchGridView control replace the markup for the Name and Enrollment Date columns as you did in the StudentsGridView control, except omit the EditItemTemplate element. SearchGridView denetiminin Columns öğesi artık aşağıdaki biçimlendirmeyi içerir:The Columns element of the SearchGridView control now contains the following markup:

<asp:TemplateField HeaderText="Name" SortExpression="LastName">
                <ItemTemplate>
                    <asp:DynamicControl ID="LastNameLabel" runat="server" DataField="LastName" Mode="ReadOnly" />,
                    <asp:DynamicControl ID="FirstNameLabel" runat="server" DataField="FirstMidName" Mode="ReadOnly" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:DynamicField DataField="EnrollmentDate" HeaderText="Enrollment Date" SortExpression="EnrollmentDate" />

Students.aspx.cs açın ve aşağıdaki using ifadesini ekleyin:Open Students.aspx.cs and add the following using statement:

using ContosoUniversity.DAL;

Sayfanın Init olayı için bir işleyici ekleyin:Add a handler for the page's Init event:

protected void Page_Init(object sender, EventArgs e)
{
    StudentsGridView.EnableDynamicData(typeof(Student));
    SearchGridView.EnableDynamicData(typeof(Student));
}

Bu kod, dinamik verilerin, Student varlığının alanları için bu veri bağlantılı denetimlerde biçimlendirme ve doğrulama sağlayacağı belirtir.This code specifies that Dynamic Data will provide formatting and validation in these data-bound controls for fields of the Student entity. Sayfayı çalıştırdığınızda aşağıdaki örnekte olduğu gibi bir hata iletisi alırsanız, genellikle Page_Init``EnableDynamicData yöntemi çağırmayı unutmuş demektir:If you get an error message like the following example when you run the page, it typically means you've forgotten to call the EnableDynamicData method in Page_Init:

Could not determine a MetaTable. A MetaTable could not be determined for the data source 'StudentsEntityDataSource' and one could not be inferred from the request URL.

Sayfayı çalıştırın.Run the page.

Image03Image03

Kayıt tarihi sütununda, zaman tarih ile birlikte görüntülenir, çünkü özellik türü DateTime.In the Enrollment Date column, the time is displayed along with the date because the property type is DateTime. Daha sonra bunu düzeltireceksiniz.You'll fix that later.

Şimdilik, dinamik verilerin otomatik olarak temel veri doğrulaması sağladığını fark edersiniz.For now, notice that Dynamic Data automatically provides basic data validation. Örneğin, Düzenle' ye tıklayın, tarih alanını temizleyin, Güncelleştir' e tıklayın ve değer veri modelinde null atanabilir olmadığından dinamik verilerin bu gerekli alanı otomatik olarak yaptığından emin olmalısınız.For example, click Edit, clear the date field, click Update, and you see that Dynamic Data automatically makes this a required field because the value is not nullable in the data model. Sayfada, ValidationSummary denetimindeki bir alan ve hata iletisinden sonra bir yıldız görüntülenir:The page displays an asterisk after the field and an error message in the ValidationSummary control:

Image05Image05

Hata iletisini görmek için fare işaretçisini yıldız işareti üzerinde tutabilmeniz için ValidationSummary denetimini atlayabilirsiniz.You could omit the ValidationSummary control, because you can also hold the mouse pointer over the asterisk to see the error message:

Image06Image06

Dinamik veriler de kayıt tarihi alanına girilen verilerin geçerli bir tarih olduğunu doğrular:Dynamic Data will also validate that data entered in the Enrollment Date field is a valid date:

Image04Image04

Gördüğünüz gibi, bu genel bir hata iletisidir.As you can see, this is a generic error message. Sonraki bölümde, iletileri özelleştirmeyi ve doğrulama ve biçimlendirme kurallarını nasıl özelleştireceğinizi göreceksiniz.In the next section you'll see how to customize messages as well as validation and formatting rules.

Veri modeline meta veriler eklemeAdding Metadata to the Data Model

Genellikle, dinamik veriler tarafından sunulan işlevselliği özelleştirmek istersiniz.Typically, you want to customize the functionality provided by Dynamic Data. Örneğin, verilerin görüntülendiğini ve hata iletilerinin içeriğini değiştirebilirsiniz.For example, you might change how data is displayed and the content of error messages. Ayrıca, veri türlerine bağlı olarak dinamik verilerin otomatik olarak sağladığı daha fazla işlevsellik sağlamak için veri doğrulama kurallarını da özelleştirebilirsiniz.You typically also customize data validation rules to provide more functionality than what Dynamic Data provides automatically based on data types. Bunu yapmak için varlık türlerine karşılık gelen kısmi sınıflar oluşturursunuz.To do this, you create partial classes that correspond to entity types.

Çözüm Gezgini, contosouniversity projesine sağ tıklayın, başvuru ekle' yi seçin ve System.ComponentModel.DataAnnotationsbir başvuru ekleyin.In Solution Explorer, right-click the ContosoUniversity project, select Add Reference, and add a reference to System.ComponentModel.DataAnnotations.

Image11Image11

Dal klasöründe, yeni bir sınıf dosyası oluşturun, Student.csolarak adlandırın ve içindeki şablon kodunu aşağıdaki kodla değiştirin.In the DAL folder, create a new class file, name it Student.cs, and replace the template code in it with the following code.

using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace ContosoUniversity.DAL
{
    [MetadataType(typeof(StudentMetadata))]
    public partial class Student
    {
    }

    public class StudentMetadata
    {
        [DisplayFormat(DataFormatString="{0:d}", ApplyFormatInEditMode=true)]
        public DateTime EnrollmentDate { get; set; }

        [StringLength(25, ErrorMessage = "First name must be 25 characters or less in length.")]
        [Required(ErrorMessage="First name is required.")]
        public String FirstMidName { get; set; }

        [StringLength(25, ErrorMessage = "Last name must be 25 characters or less in length.")]
        [Required(ErrorMessage = "Last name is required.")]
        public String LastName { get; set; }
    }
}

Bu kod Student varlığı için kısmi bir sınıf oluşturur.This code creates a partial class for the Student entity. Bu parçalı sınıfa uygulanan MetadataType özniteliği, meta verileri belirtmek için kullandığınız sınıfı tanımlar.The MetadataType attribute applied to this partial class identifies the class that you're using to specify metadata. Meta veri sınıfı herhangi bir ada sahip olabilir, ancak varlık adı artı "metadata" kullanılması yaygın bir uygulamadır.The metadata class can have any name, but using the entity name plus "Metadata" is a common practice.

Meta veri sınıfındaki özelliklere uygulanan öznitelikler biçimlendirme, doğrulama, kurallar ve hata iletileri belirler.The attributes applied to properties in the metadata class specify formatting, validation, rules, and error messages. Burada gösterilen öznitelikler aşağıdaki sonuçlara sahip olacaktır:The attributes shown here will have the following results:

  • EnrollmentDate bir tarih (bir süre olmadan) olarak gösterilir.EnrollmentDate will display as a date (without a time).
  • Her iki ad alanı da 25 karakter uzunluğunda veya daha az olmalı ve özel bir hata iletisi sağlanmalıdır.Both name fields must be 25 characters or less in length, and a custom error message is provided.
  • Her iki ad alanı da gereklidir ve özel bir hata iletisi sağlanır.Both name fields are required, and a custom error message is provided.

Öğrenciler. aspx sayfasını yeniden çalıştırın ve tarihlerin şu zamanlarda görüntülendiğini görürsünüz:Run the Students.aspx page again, and you see that the dates are now displayed without times:

Image08Image08

Bir satırı düzenleyin ve ad alanlarındaki değerleri temizlemeye çalışın.Edit a row and try to clear the values in the name fields. Alan hatalarını gösteren yıldız işaretleri, bir alanı bıraktığınızda, Güncelleştir' e tıklamadan önce görüntülenir.The asterisks indicating field errors appear as soon as you leave a field, before you click Update. Güncelleştir' e tıkladığınızda, sayfada belirttiğiniz hata iletisi metni görüntülenir.When you click Update, the page displays the error message text you specified.

Image10Image10

25 karakterden daha uzun adlar girmeyi deneyin, Güncelleştir' e tıklayın ve belirttiğiniz hata iletisi metnini görüntüler.Try to enter names that are longer than 25 characters, click Update, and the page displays the error message text you specified.

Image09Image09

Veri modeli meta verilerinde bu biçimlendirme ve doğrulama kurallarını ayarladığınıza göre, kurallar, DynamicControl veya DynamicField denetimleri kullandığınız sürece bu alanlarda değişiklik gösteren veya bu alanlarda değişiklik sağlayan her sayfada otomatik olarak uygulanır.Now that you've set up these formatting and validation rules in the data model metadata, the rules will automatically be applied on every page that displays or allows changes to these fields, so long as you use DynamicControl or DynamicField controls. Bu, programlama ve sınamayı daha kolay hale getiren ve veri biçimlendirme ve doğrulamanın bir uygulama genelinde tutarlı olmasını sağlayan, yazmanız gereken gereksiz kod miktarını azaltır.This reduces the amount of redundant code you have to write, which makes programming and testing easier, and it ensures that data formatting and validation are consistent throughout an application.

Daha Fazla BilgiMore Information

Bu, Entity Framework ile çalışmaya başlama konusunda bu öğreticiyle sonuçlanır.This concludes this series of tutorials on Getting Started with the Entity Framework. Entity Framework nasıl kullanacağınızı öğrenmenize yardımcı olacak daha fazla kaynak için, sonraki Entity Framework öğretici serisinde ilk öğreticiye devam edin veya aşağıdaki siteleri ziyaret edin:For more resources to help you learn how to use the Entity Framework, continue with the first tutorial in the next Entity Framework tutorial series or visit the following sites: