ado.net 4 .pdf - Microsoft ADO.NET 4 Step by Step u00ae...

  • No School
  • AA 1
  • peterwambua385
  • 441

This preview shows page 1 out of 441 pages.

Unformatted text preview: Microsoft ADO.NET 4 Step by Step ® Tim Patrick Dwonloaded from: iDATA.ws Published with the authorization of Microsoft Corporation by: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, California 95472 Copyright © 2010 Tim Patrick. Complying with all applicable copyright laws is the responsibility of the user. All rights reserved. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without express written permission of O’Reilly Media, Inc. Printed and bound in the United States of America. 1 2 3 4 5 6 7 8 9 WCT 5 4 3 2 1 0 Microsoft Press titles may be purchased for educational, business or sales promotional use. Online editions are also available for most titles ( ). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected] Visit our website at microsoftpress.oreilly.com. Send comments to [email protected] Microsoft, Microsoft Press, ActiveX, Excel, FrontPage, Internet Explorer, PowerPoint, SharePoint, Webdings, Windows, and Windows 7 are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks of their respective owners. Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred. This book expresses the author’s views and opinions. The information contained in this book is provided without any express, statutory, or implied warranties. Neither the author, O’Reilly Media, Inc., Microsoft Corporation, nor their respective resellers or distributors, will be held liable for any damages caused or alleged to be caused either directly or indirectly by such information. Acquisitions and Development Editor: Russell Jones Production Editor: Kristen Borg Production Services: Octal Publishing, Inc. Technical Reviewer: Sahil Malik Indexing: Potomac Indexing, LLC Cover: Karen Montgomery Compositor: Susan Brown Illustrator: Robert Romano 978-0-735-63888-4 Dwonloaded from: iDATA.ws To Abel Chan, a good friend and a good programmer. Dwonloaded from: iDATA.ws Dwonloaded from: iDATA.ws Contents at a Glance Part I Getting to Know ADO.NET hapter 1 C Introducing ADO.NET 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Chapter 2 Building Tables of Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Chapter 3 Storing Data in Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Chapter 4 Accessing the Right Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Chapter 5 Bringing Related Data Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Chapter 6 Turning Data into Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Chapter 7 Saving and Restoring Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Part II Connecting to External Data Sources hapter 8 C Establishing External Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 9 Querying Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 10 Adding Standards to Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 11 Making External Data Available Locally . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 12 Guaranteeing Data Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 135 153 169 191 Dwonloaded from: iDATA.ws v vi Contents at a Glance Part III Entity Framework hapter 13 C Introducing the Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 14 Visualizing Data Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 15 Querying Data in the Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 16 Understanding Entities Through Objects . . . . . . . . . . . . . . . . . . . . . . . 213 225 245 267 Part IV LINQ Chapter 17 Introducing LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 18 Using LINQ to DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 19 Using LINQ to Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 20 Using LINQ to SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Part V 289 305 315 331 Providing RESTful Services with WCF Data Services Chapter 21 Binding Data with ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Chapter 22 Providing RESTful Services with WCF Data Services . . . . . . . . . . . . . . 369 Dwonloaded from: iDATA.ws Table of Contents Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Part I Getting to Know ADO.NET 1 Introducing ADO.NET 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 What Is ADO.NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Why ADO.NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Major Components of ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Extensions to ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Connecting to External Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Chapter 1 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2 Building Tables of Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Implementing Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Logical and Physical Table Implementations . . . . . . . . . . . . . . . . . . . . . . . 17 The DataTable Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Adding Data Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Dataset Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Chapter 2 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3 Storing Data in Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Adding Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Creating New Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Defining Row Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Storing Rows in a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 What do you think of this book? We want to hear from you! Microsoft is interested in hearing your feedback so we can continually improve our books and learning resources for you. To participate in a brief online survey, please visit: Dwonloaded from: iDATA.ws vii viii Table of Contents Examining and Changing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Removing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Batch Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Row State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Row Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Validating Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Exception-Based Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Validation-Based Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Chapter 3 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4 Accessing the Right Data Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Querying and Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Finding Rows by Primary Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Selecting Rows with a Search Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Sorting Search Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Performing Case-Sensitive Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Using Expression Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Chapter 4 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5 Bringing Related Data Together . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Collecting Tables into Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Establishing Relationships Between Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Understanding Table Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Creating Data Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Locating Parent and Child Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Defining Table Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Chapter 5 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6 Turning Data into Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Aggregating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Generating a Single Aggregate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Adding an Aggregate Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Aggregating Data Across Related Tables . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Referencing Parent Fields in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Dwonloaded from: iDATA.ws Table of Contents Setting Up Indexed Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Creating a DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Using a DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Chapter 6 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7 Saving and Restoring Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Serializing DataSet and DataTable Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Writing XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Reading XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Guiding XML Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Identifying Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Nesting Child Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Managing and Positioning Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Chapter 7 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Part II Connecting to External Data Sources 8 Establishing External Connections . . . . . . . . . . . . . . . . . . . . . . . . 121 Using Connection Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 SQL Server Connection Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 OLE DB and ODBC Connection Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Connection String Builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Storing Connection Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Understanding Data Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Connecting to SQL Server via a Data Provider . . . . . . . . . . . . . . . . . . . . . . . . . 127 Creating and Opening Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Connection Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Chapter 8 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 9 Querying Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Processing SQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Creating Command Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Processing Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Processing Asynchronously . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Dwonloaded from: iDATA.ws ix x Table of Contents Returning Query Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Returning a Single Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Returning Data Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Accessing Field Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Processing More Complicated Results . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Chapter 9 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10 Adding Standards to Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Developing Parameterized Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Understanding the Need for Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 154 Implementing Standard Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Using Parameters with Other Providers . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Using Parameters in Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Chapter 10 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 11 Making External Data Available Locally . . . . . . . . . . . . . . . . . . . . 169 Understanding Data Adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Moving Data from Source to Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Moving Data into a DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Moving Data into a DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Moving Data from Memory to Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Configuring the Update Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Performing the Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Generating Update Commands Automatically . . . . . . . . . . . . . . . . . . . . 180 Table and Column Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Chapter 11 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 12 Guaranteeing Data Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Transactions and Concurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Using Local Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Employing Savepoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Using Distributed Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Chapter 12 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Dwonloaded from: iDATA.ws Table of Contents Part III Entity Framework 13 Introducing the Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . 213 Understanding the Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Defining the Entity Framework’s Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Understanding the Entity Framework’s Layers . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Understanding the Conceptual Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Understanding the Storage Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Understanding the Model Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Using...
View Full Document

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture