Ek DataTable Sütunları Ekleme (C#)

tarafından Scott Mitchell

PDF’yi İndir

Typed DataSet oluşturmak için TableAdapter Sihirbazı kullanılırken, karşılık gelen DataTable ana veritabanı sorgusu tarafından döndürülen sütunları içerir. Ancak DataTable'ın ek sütunlar içermesi gereken durumlar vardır. Bu öğreticide, ek DataTable sütunlarına ihtiyacımız olduğunda saklı yordamların neden önerileceği hakkında bilgi edineceğiz.

Giriş

Typed DataSet'e TableAdapter eklerken, karşılık gelen DataTable şeması TableAdapter'ın ana sorgusu tarafından belirlenir. Örneğin, ana sorgu A, B ve C veri alanlarını döndürüyorsa, DataTable'da A, B ve C adlı karşılık gelen üç sütun olur. TableAdapter, ana sorgusuna ek olarak verilerin bir alt kümesini bazı parametrelere göre döndüren ek sorgular da içerebilir. Örneğin, tüm ürünler hakkında bilgi döndüren s ana sorgusuna ProductsTableAdapter ek olarak, sağlanan parametreye göre belirli ürün bilgilerini döndüren ve GetProductByProductID(productID)gibi GetProductsByCategoryID(categoryID) yöntemleri de içerir.

DataTable şemasına sahip olma modeli TableAdapter'ın ana sorgusunu yansıtır. Tüm TableAdapter yöntemlerinin ana sorguda belirtilenlerden aynı veya daha az veri alanı döndürmesi iyi sonuçlanır. TableAdapter yönteminin ek veri alanları döndürmesi gerekiyorsa DataTable şemasını buna göre genişletmemiz gerekir. Details DataList ile Madde İşaretli Ana/Ayrıntı Listesi Kullanma öğreticisinde, ana sorguda tanımlanan , CategoryNameve Description veri alanlarını artı olarak NumberOfProductsdöndüren ve her kategoriyle ilişkili ürün sayısını bildiren ek bir veri alanı döndüren bir yöntem CategoriesTableAdapterCategoryIDekledik. Bu yeni yöntemden veri alanı değerini yakalamak NumberOfProducts için öğesine el ile yeni bir sütun CategoriesDataTable ekledik.

Dosyaları Karşıya Yükleme öğreticisinde açıklandığı gibi, geçici SQL deyimleri kullanan ve veri alanları ana sorguyla tam olarak eşleşmeyen yöntemleri olan TableAdapters ile büyük özen gösterilmelidir. TableAdapter Yapılandırma sihirbazı yeniden çalıştırılırsa, tüm TableAdapter yöntemlerini güncelleştirerek veri alanı listesinin ana sorguyla eşleşmesini sağlar. Sonuç olarak, özelleştirilmiş sütun listelerine sahip tüm yöntemler ana sorgunun sütun listesine geri döner ve beklenen verileri döndürmez. Saklı yordamlar kullanılırken bu sorun ortaya çıkmaz.

Bu öğreticide, DataTable şemasını ek sütunlar içerecek şekilde genişletmeyi inceleyeceğiz. Geçici SQL deyimleri kullanılırken TableAdapter'ın kırılganlığı nedeniyle, bu öğreticide saklı yordamları kullanacağız. TableAdapter'ı saklı yordamları kullanacak şekilde yapılandırma hakkında daha fazla bilgi için, Typed DataSet s TableAdapers için Yeni Saklı Yordamlar Oluşturma öğreticisine bakın.

1. Adım: Sütun EklemePriceQuartileProductsDataTable

Typed DataSet'in TableAdapters için Yeni Saklı Yordamlar Oluşturma öğreticisinde adlı NorthwindWithSprocsbir Türlenmiş Veri Kümesi oluşturduk. Bu DataSet şu anda iki DataTable içerir: ProductsDataTable ve EmployeesDataTable. ProductsTableAdapter aşağıdaki üç yönteme sahiptir:

  • GetProducts - tablodan tüm kayıtları Products döndüren ana sorgu
  • GetProductsByCategoryID(categoryID) - belirtilen kategori kimliğine sahip tüm ürünleri döndürür.
  • GetProductByProductID(productID) - belirtilen productID değerine sahip belirli bir ürünü döndürür.

Ana sorgu ve ek iki yöntemin tümü, tablodaki tüm sütunlar Products gibi aynı veri alanı kümesini döndürür. ya da tablolarından ilişkili verileri çeken bağıntılı Categories alt sorgu JOIN yokSuppliers. Bu nedenle, tablosundaki ProductsDataTable her alan Products için karşılık gelen bir sütun vardır.

Bu öğretici için, adlı GetProductsWithPriceQuartile öğesine ProductsTableAdapter tüm ürünleri döndüren bir yöntem ekleyelim. Standart ürün veri alanlarına ek olarak, GetProductsWithPriceQuartile ürünün fiyatının hangi dörttebirlik değere düştüğünü gösteren bir PriceQuartile veri alanı da içerecektir. Örneğin, fiyatları en pahalı %25 olan ürünlerin değeri 1 olurken PriceQuartile , fiyatları en düşük %25'e düşenler 4 değerine sahip olur. Ancak bu bilgileri döndürmek için saklı yordamı oluşturma konusunda endişelenmeden önce, yöntem kullanıldığında sonuçları GetProductsWithPriceQuartile tutacak PriceQuartile bir sütun içerecek şekilde güncelleştirmemiz ProductsDataTable gerekir.

DataSet'i NorthwindWithSprocs açın ve öğesine ProductsDataTablesağ tıklayın. Bağlam menüsünden Ekle'yi ve ardından Sütun'u seçin.

ProductsDataTable'a Yeni Sütun Ekleme

Şekil 1: Öğesine Yeni Sütun ProductsDataTable Ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu, DataTable'a türünde System.StringColumn1 adlı yeni bir sütun ekler. 1 ile 4 arasında bir sayıyı tutmak için kullanılacağından bu sütunun adını PriceQuartile ve türünü System.Int32 olarak güncelleştirmemiz gerekir. ve içinde ProductsDataTable yeni eklenen sütunu seçin ve Özellikler penceresi özelliğini PriceQuartile ve DataType özelliğini olarak System.Int32ayarlayınName.

Yeni Sütunun Adını ve DataType Özelliklerini Ayarlama

Şekil 2: Yeni Sütun ve NameDataType Özellikleri Ayarlama (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Şekil 2'de gösterildiği gibi, sütundaki değerlerin benzersiz olması gerekip gerekmediği, sütun otomatik artırma sütunuysa, veritabanı NULL değerlerine izin verilip verilmeyeceği gibi ek özellikler ayarlanabilir. Bu değerleri varsayılan değerlerine ayarlanmış olarak bırakın.

2. Adım: Yöntemi OluşturmaGetProductsWithPriceQuartile

ProductsDataTable sütunu içerecek PriceQuartile şekilde güncelleştirildiğinden, yöntemini oluşturmaya GetProductsWithPriceQuartile hazırız. TableAdapter'a sağ tıklayıp bağlam menüsünden Sorgu Ekle'yi seçerek başlayın. Bu, ilk olarak geçici SQL deyimlerini mi yoksa yeni veya mevcut bir saklı yordamı mı kullanmak istediğimizi soran TableAdapter Sorgu Yapılandırması sihirbazını getirir. Fiyat dörttebirlik verilerini döndüren bir saklı yordamımız olmadığından TableAdapter'ın bu saklı yordamı oluşturmasına izin verelim. Yeni saklı yordam oluştur seçeneğini belirleyin ve İleri'ye tıklayın.

TableAdapter Sihirbazı'na Bizim İçin Saklı Yordamı Oluşturmasını Bildirin

Şekil 3: TableAdapter Sihirbazı'na Saklı Yordamı Oluşturma Talimatı Verme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Şekil 4'te gösterilen sonraki ekranda sihirbaz bize ne tür bir sorgu ekleneceğini sorar. yöntemi tablodaki GetProductsWithPriceQuartile tüm sütunları ve kayıtları Products döndüreceğinden, Satırları döndüren SEÇ seçeneğini belirleyin ve İleri'ye tıklayın.

Sorgumuz, birden çok satır döndüren bir SELECT Deyimi olacaktır

Şekil 4: Sorgumuz Birden Çok Satır Döndüren bir SELECT Deyim olacaktır (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Ardından sorgu istenir SELECT . Sihirbaza aşağıdaki sorguyu girin:

SELECT ProductID, ProductName, SupplierID, CategoryID, 
       QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, 
       ReorderLevel, Discontinued,
       NTILE(4) OVER (ORDER BY UnitPrice DESC) as PriceQuartile
FROM Products

Yukarıdaki sorgu, SQL Server 2005'in yeni NTILE işlevini kullanarak sonuçları grupların azalan düzende sıralanan değerlere göre UnitPrice belirlendiği dört gruba böler.

Ne yazık ki Sorgu Oluşturucusu anahtar sözcüğün OVER nasıl ayrıştırılacağını bilmez ve yukarıdaki sorguyu ayrıştırırken bir hata görüntüler. Bu nedenle, Sorgu Oluşturucusu'nu kullanmadan yukarıdaki sorguyu doğrudan sihirbazdaki metin kutusuna girin.

Not

NTILE ve SQL Server 2005'in diğer derecelendirme işlevleri hakkında daha fazla bilgi için SQL Server 2005 Çevrimiçi Kitaplar bölümündeki ROW_NUMBER (Transact-SQL) ve Derecelendirme İşlevleri bölümüne bakın.

Sorguyu SELECT girdikten ve İleri'ye tıkladıktan sonra sihirbaz, oluşturacağı saklı yordam için bir ad sağlamamızı ister. Yeni saklı yordamı Products_SelectWithPriceQuartile adlandırın ve İleri'ye tıklayın.

Saklı Yordamı Products_SelectWithPriceQuartile adlandırın

Şekil 5: Saklı Yordamı Products_SelectWithPriceQuartile Adlandırın (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Son olarak, TableAdapter yöntemlerini adlandırmamız istenir. Hem DataTable Doldur hem de DataTable Döndür onay kutularını işaretli bırakın ve ve yöntemlerini FillWithPriceQuartile ve GetProductsWithPriceQuartileolarak adlandırın.

TableAdapter Yöntemlerini Adlandırın ve Son'a Tıklayın

Şekil 6: TableAdapter Yöntemlerini Adlandırın ve Son'a Tıklayın (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sorgu belirtildi SELECT , saklı yordam ve TableAdapter yöntemleri adlı, sihirbazı tamamlamak için Son'a tıklayın. Bu noktada sihirbazdan SQL yapısının veya deyiminin desteklenmediğini belirten OVER bir veya iki uyarı alabilirsiniz. Bu uyarılar yoksayılabilir.

Sihirbazı tamamladıktan sonra, TableAdapter ve GetProductsWithPriceQuartile yöntemlerini içermeli FillWithPriceQuartile ve veritabanı adlı Products_SelectWithPriceQuartilebir saklı yordam içermelidir. TableAdapter'ın gerçekten de bu yeni yöntemi içerdiğini ve saklı yordamın veritabanına doğru şekilde eklendiğini doğrulamak için bir dakikanızı ayırın. Veritabanını denetlerken saklı yordamı görmüyorsanız Saklı Yordamlar klasörüne sağ tıklayıp Yenile'yi seçmeyi deneyin.

TableAdapter'a Yeni Bir Yöntem Eklendiğini Doğrulama

Şekil 7: TableAdapter'a Yeni Bir Yöntem Eklendiğini Doğrulama

Veritabanının Products_SelectWithPriceQuartile Saklı Yordamı İçerdiğinden emin olun

Şekil 8: Veritabanının Saklı Yordamı İçerdiğinden Products_SelectWithPriceQuartile emin olun (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Not

Geçici SQL deyimleri yerine saklı yordamları kullanmanın avantajlarından biri, TableAdapter Yapılandırma sihirbazının yeniden çalıştırılmasının saklı yordamlar sütun listelerini değiştirmemesidir. TableAdapter'a sağ tıklayarak, sihirbazı başlatmak için bağlam menüsünden Yapılandır seçeneğini belirleyerek ve ardından tamamlamak için Son'a tıklayarak bunu doğrulayın. Ardından veritabanına gidin ve saklı yordamı görüntüleyin Products_SelectWithPriceQuartile . Sütun listesinin değiştirilmediğini unutmayın. Geçici SQL deyimlerini kullansaydık TableAdapter Yapılandırma sihirbazı yeniden çalıştırıldığında bu sorgunun sütun listesi ana sorgu sütun listesiyle eşleşecek şekilde geri döndürülür ve böylece ntile deyimi yöntemi tarafından GetProductsWithPriceQuartile kullanılan sorgudan kaldırılırdı.

Veri Erişim Katmanı GetProductsWithPriceQuartile yöntemi çağrıldığında TableAdapter saklı yordamı yürütür Products_SelectWithPriceQuartile ve döndürülen her kayıt için öğesine ProductsDataTable bir satır ekler. Saklı yordam tarafından döndürülen veri alanları s sütunlarıyla ProductsDataTable eşlenir. Saklı yordamdan döndürülen bir PriceQuartile veri alanı olduğundan, değeri s PriceQuartile sütununa ProductsDataTable atanır.

Sorguları veri PriceQuartile alanı döndürmeyen TableAdapter yöntemleri için sütunun PriceQuartile değeri özelliği tarafından DefaultValue belirtilen değerdir. Şekil 2'de gösterildiği gibi, bu değer varsayılan olarak ayarlanır DBNull. Farklı bir varsayılan değer tercih ederseniz, özelliği buna göre ayarlamanız DefaultValue yeterlidir. S sütunu (sütun System.Int32 için) göz önünde bulundurulduğunda değerin PriceQuartile geçerli olduğundan emin olunDefaultValue.DataType

Bu noktada DataTable'a ek sütun eklemek için gerekli adımları gerçekleştirdik. Bu ek sütunun beklendiği gibi çalıştığını doğrulamak için, her ürünün adını, fiyatını ve fiyat dörtte birini görüntüleyen bir ASP.NET sayfası oluşturalım. Ancak bunu yapmadan önce İş Mantığı Katmanı'nı DAL GetProductsWithPriceQuartile yöntemini çağıran bir yöntem içerecek şekilde güncelleştirmemiz gerekir. 3. Adımda BLL'yi güncelleştirecek ve ardından 4. Adımda ASP.NET sayfasını oluşturacağız.

3. Adım: İş Mantığı Katmanını Artırma

Sunu Katmanı'ndan yeni GetProductsWithPriceQuartile yöntemi kullanmadan önce BLL'ye karşılık gelen bir yöntem eklemeliyiz. ProductsBLLWithSprocs Sınıf dosyasını açın ve aşağıdaki kodu ekleyin:

[System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
public NorthwindWithSprocs.ProductsDataTable GetProductsWithPriceQuartile()
{
    return Adapter.GetProductsWithPriceQuartile();
}

içindeki ProductsBLLWithSprocsdiğer veri alma yöntemleri gibi yöntemi de GetProductsWithPriceQuartile dal'ın karşılık gelen GetProductsWithPriceQuartile yöntemini çağırır ve sonuçlarını döndürür.

4. Adım: ASP.NET Web Sayfasında Fiyat Dörttebirlik Bilgilerini Görüntüleme

BLL eklemesi tamamlandıktan sonra, her ürün için fiyat dörttebirlik değerini gösteren bir ASP.NET sayfası oluşturmaya hazırız. klasöründeki sayfayı AddingColumns.aspxAdvancedDAL açın ve Toolbox'tan bir GridView'u Tasarım Aracı sürükleyerek özelliğini olarak ProductsayarlayınID. GridView'un akıllı etiketinden bunu adlı ProductsDataSourceyeni bir ObjectDataSource'a bağlayın. ObjectDataSource'ı sınıfının GetProductsWithPriceQuartile yöntemini kullanacak ProductsBLLWithSprocs şekilde yapılandırın. Bu salt okunur bir kılavuz olacağından, UPDATE, INSERT ve DELETE sekmelerindeki açılan listeleri (Yok) olarak ayarlayın.

ObjectDataSource'ı ProductsBLLWithSprocs Sınıfını Kullanacak Şekilde Yapılandırma

Şekil 9: ObjectDataSource'ı Sınıfı Kullanacak ProductsBLLWithSprocs Şekilde Yapılandırma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

GetProductsWithPriceQuartile Yönteminden Ürün Bilgilerini Alma

Şekil 10: Yöntemden GetProductsWithPriceQuartile Ürün Bilgilerini Alma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veri Kaynağını Yapılandırma sihirbazını tamamladıktan sonra Visual Studio, yöntemi tarafından döndürülen her veri alanı için GridView'a otomatik olarak bir BoundField veya CheckBoxField ekler. Bu veri alanlarından PriceQuartilebiri, 1. Adımda öğesine eklediğimiz ProductsDataTable sütundur.

GridView alanlarını düzenleyerek , UnitPriceve PriceQuartile BoundField'ler dışında ProductNametüm alanları kaldırır. BoundField değerini UnitPrice para birimi olarak biçimlendirecek ve UnitPrice ve PriceQuartile BoundField değerlerinin sırasıyla sağa ve ortaya hizalı olmasını sağlamak için yapılandırın. Son olarak, kalan BoundFields HeaderText özelliklerini sırasıyla Product, Price ve Price Quartile olarak güncelleştirin. Ayrıca GridView akıllı etiketinden Sıralamayı Etkinleştir onay kutusunu işaretleyin.

Bu değişikliklerden sonra GridView ve ObjectDataSource bildirim temelli işaretlemesi aşağıdaki gibi görünmelidir:

<asp:GridView ID="Products" runat="server" AllowSorting="True"
    AutoGenerateColumns="False" DataKeyNames="ProductID" 
    DataSourceID="ProductsDataSource">
    <Columns>
        <asp:BoundField DataField="ProductName" HeaderText="Product" 
            SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" 
            HeaderText="Price" HtmlEncode="False" 
            SortExpression="UnitPrice">
            <ItemStyle HorizontalAlign="Right" />
        </asp:BoundField>
        <asp:BoundField DataField="PriceQuartile" HeaderText="Price Quartile" 
            SortExpression="PriceQuartile">
            <ItemStyle HorizontalAlign="Center" />
        </asp:BoundField>
    </Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ProductsDataSource" runat="server" 
    OldValuesParameterFormatString="original_{0}"
    SelectMethod="GetProductsWithPriceQuartile" 
    TypeName="ProductsBLLWithSprocs">
</asp:ObjectDataSource>

Şekil 11'de tarayıcı üzerinden ziyaret edildiğinde bu sayfa gösterilmektedir. Başlangıçta, ürünlerin her ürüne uygun PriceQuartile bir değer atanarak azalan düzende fiyatlarına göre sipariş verildiğini unutmayın. Elbette bu veriler, Fiyat Dörttebirliği sütun değerine sahip diğer ölçütlere göre sıralanabilir ve fiyat açısından ürünün derecelendirmesini yansıtmaktadır (bkz. Şekil 12).

Ürünler Fiyatlarına Göre Sipariş Edilir

Şekil 11: Ürünler Fiyatlarına Göre Sipariş Edilir (Tam boyutlu resmi görüntülemek için tıklayın)

Ürünler Adlarına Göre Sipariş Edilir

Şekil 12: Ürünler Adlarına Göre Sıralanır (Tam boyutlu resmi görüntülemek için tıklayın)

Not

Birkaç kod satırıyla GridView'u ürün satırlarını PriceQuartile değerlerine göre renklendirmesi için genişletebiliriz. Bu ürünleri ilk dörtte bir açık yeşil, ikinci dörttebirindekiler açık sarı vb. renklendirebiliriz. Bu işlevi eklemek için biraz zaman ayırın. GridView'u biçimlendirme konusunda bir yenileyiciye ihtiyacınız varsa Verilere Göre Özel Biçimlendirme öğreticisine başvurun.

Alternatif Yaklaşım - Başka Bir TableAdapter Oluşturma

Bu öğreticide gördüğümüz gibi, bir TableAdapter'a ana sorgu tarafından hecelenenler dışında veri alanları döndüren bir yöntem eklerken, DataTable'a karşılık gelen sütunları ekleyebiliriz. Ancak böyle bir yaklaşım, yalnızca TableAdapter'da farklı veri alanları döndüren az sayıda yöntem varsa ve bu alternatif veri alanları ana sorgudan çok fazla farklılık göstermiyorsa iyi sonuç verir.

DataTable'a sütun eklemek yerine, dataset'e farklı veri alanları döndüren ilk TableAdapter'ın yöntemlerini içeren başka bir TableAdapter ekleyebilirsiniz. Bu öğreticide sütunu öğesine eklemek PriceQuartile yerine (yalnızca yöntemi tarafından GetProductsWithPriceQuartile kullanılır) DataSet'e ProductsWithPriceQuartileTableAdapter ana sorgusu olarak saklı yordamı kullanan Products_SelectWithPriceQuartile bir TableAdapter daha ekleyebilirdik.ProductsDataTable fiyat dörttebirliğiyle ürün bilgilerini almak için gereken ASP.NET sayfalarda ProductsWithPriceQuartileTableAdapterkullanılırken, kullanmaya devam etmeye devam ProductsTableAdapteretmeyenler kullanılır.

Yeni bir TableAdapter ekleyerek, DataTable'lar untarnished kalır ve sütunları TableAdapter yöntemleri tarafından döndürülen veri alanlarını tam olarak yansıtır. Ancak, ek TableAdaplayıcılar yinelenen görevler ve işlevlere neden olabilir. Örneğin, sütunu görüntüleyen PriceQuartile bu ASP.NET sayfaları ekleme, güncelleştirme ve silme desteği sağlamak için de gerekliyse , ProductsWithPriceQuartileTableAdapterUpdateCommandve DeleteCommand özelliklerinin düzgün yapılandırılması InsertCommandgerekir. Bu özellikler s'leri ProductsTableAdapter yansıtsa da, bu yapılandırma ek bir adım ekler. Ayrıca, artık ve ProductsWithPriceQuartileTableAdapter sınıfları aracılığıyla bir ürünü güncelleştirmenin, silmenin veya veritabanına eklemenin ProductsTableAdapter iki yolu vardır.

Bu öğretici için indirme, DataSet'te NorthwindWithSprocs bu alternatif yaklaşımı gösteren bir ProductsWithPriceQuartileTableAdapter sınıf içerir.

Özet

Çoğu senaryoda, TableAdapter'daki tüm yöntemler aynı veri alanı kümesini döndürür, ancak belirli bir veya iki yöntemin ek bir alan döndürmesi gerekebileceği zamanlar vardır. Örneğin, Ayrıntılar Veri Listesi ile Madde İşaretli Ana Kayıtların Ana/Ayrıntı Listesini Kullanma öğreticisinde, ana sorgunun veri alanlarına ek olarak, her kategoriyle ilişkili ürün sayısını bildiren bir alan döndüren bir NumberOfProducts yöntem CategoriesTableAdapter ekledik. Bu öğreticide, ana sorgunun ProductsTableAdapter veri alanlarına ek olarak bir alan döndüren içinde bir PriceQuartile yöntem eklemeyi inceledik. TableAdapter yöntemleri tarafından döndürülen ek veri alanlarını yakalamak için DataTable'a karşılık gelen sütunları eklememiz gerekir.

DataTable'a el ile sütun eklemeyi planlıyorsanız TableAdapter'ın saklı yordamları kullanması önerilir. TableAdapter geçici SQL deyimleri kullanıyorsa, TableAdapter Yapılandırma sihirbazı her çalıştırıldığında tüm yöntem veri alanı listeleri ana sorgu tarafından döndürülen veri alanlarına geri döner. Bu sorun saklı yordamlara genişletilmez, bu nedenle bunlar önerilir ve bu öğreticide kullanılmıştır.

Mutlu Programlama!

Yazar hakkında

Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Adresine adresinden veya adresinden ulaşabileceğiniz http://ScottOnWriting.NETblogu aracılığıyla ulaşabilirsinizmitchell@4GuysFromRolla.com.

Özel Teşekkürler

Bu öğretici serisi birçok yararlı gözden geçiren tarafından gözden geçirildi. Bu öğreticinin baş gözden geçirenleri Randy Schmidt, Jacky Goor, Bernadette Leigh ve Hilton Giesenow oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, bana adresinden bir satır mitchell@4GuysFromRolla.combırakın.