Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

MCTS SelfPaced Training Kit (Exam 70516): Accessing Data with Microsoft .NET Framework 4
Nội dung xem thử
Mô tả chi tiết
Introduction
System Requirements
Hardware Requirements
Software Requirements
Code Samples
Using the CD
How to Install the Practice Tests
How to Use the Practice Tests
How to Uninstall the Practice Tests
Acknowledgments
Support & Feedback
Errata
We Want to Hear from You
Stay in Touch
Preparing for the Exam
CHAPTER 1
ADO.NET Disconnected Classes
Before You Begin
Lesson 1: Working with the DataTable and DataSet Classes
The DataTable Class
Using DataView as a Window into a Data Table
Using a DataSet Object to Coordinate Work Between Data Tables
Lesson Summary
Lesson Review
Lesson 2: Serialization, Specialized Types, and Data Binding
Serializing and Deserializing the Data Table with XML Data
Serializing and Deserializing DataSet Objects
Handling Specialized Types
Data Binding Overview
Lesson Summary
Lesson Review
Case Scenarios
Case Scenario 1: The Traveling Sales Team
Case Scenario 2: Sorting and Filtering Data
Suggested Practices
Take a Practice Test
CHAPTER 2
ADO.NET Connected Classes
Before You Begin
Lesson 1: Connecting to the Data Store
Using Providers to Move Data
Getting Started with the DbConnection Object
Storing the Connection String in the Application Configuration File
Encrypted Communications to SQL Server
Storing Encrypted Connection Strings in Web Applications
Connection Pooling
Lesson Summary
Lesson Review
Lesson 2: Reading and Writing Data
DbCommand Object
DbDataReader Object
Using Multiple Active Result Sets (MARS) to Execute Multiple Commands on a Connection
Performing Bulk Copy Operations with a SqlBulkCopy Object
DbDataAdapter Object
DbProviderFactory Classes
Using DbException to Catch Provider Exceptions
Working with SQL Server User-Defined Types (UDTs)
Lesson Summary
Lesson Review
Lesson 3: Working with Transactions
What Is a Transaction?
Concurrency Models and Database Locking
Transaction Isolation Levels
Single Transactions and Distributed Transactions
Creating a Transaction
Introducing the System.Transactions Namespace
Working with Distributed Transactions
Viewing Distributed Transactions
Lesson Summary
Lesson Review
Case Scenarios
Case Scenario 1: Clustered Servers and Connection Pooling
Case Scenario 2: The Daily Imports
Suggested Practices
Take a Practice Test
CHAPTER
Introducing LINQ3
Before You Begin
Lesson 1: Understanding
LINQ
A LINQ Example
Deferred Execution
LINQ Providers
Features That Make Up
LINQ
Lesson Summary
Lesson Review
Lesson 2: Using LINQ
Queries
Syntax-Based and
Method-Based Queries
LINQ Keywords
Projections
Using the Let Keyword
to Help with Projections
Specifying a Filter
Specifying a Sort Order
Paging
Joins
Grouping and
Aggregation
Parallel LINQ (PLINQ)
Lesson Summary
Lesson Review
Case Scenarios
Case Scenario 1:
Fibonacci Sequence
Case Scenario 2: Sorting
and Filtering Data
Suggested Practices
Create Query with
Extension Methods
Create LINQ Queries
Take a Practice Test
CHAPTER 4
LINQ to SQL
Before You Begin
Lesson 1: What Is LINQ
to SQL?
Modeling Your Data
Examining the Designer
Output
Managing Your
Database Connection
and Context Using
DataContext
Lesson Summary
Lesson Review
Lesson 2: Executing
Queries Using LINQ to
SQL
Basic Query with Filter
and Sort
Projections
Inner Joins
Outer Joins
Grouping and
Aggregation
Paging
Lesson Summary
Lesson Review
Lesson 3: Submitting
Changes to the Database
Using DataContext
to Track Changes and
Cache Objects
The Life Cycle of an
Entity
Modifying Existing
Entities
Adding New Entities to DataContext
Deleting Entities
Using Stored Procedures
Using DataContext to Submit Changes
Submitting Changes in a Transaction
Lesson Summary
Lesson Review
Case Scenario
Case Scenario: Object-Oriented Data
Access
Suggested Practices
Create an Application That Uses LINQ
to SQL Queries
Create an Application That Modifies
Data by Using LINQ to SQL
Take a Practice Test
CHAPTER 5
LINQ to XML
Before You Begin
Lesson 1: Working with the
XmlDocument and XmlReader
Classes
The XmlDocument Class
The XmlReader Class
Lesson Summary
Lesson Review
Lesson 2: Querying with LINQ to XML
Introducing the XDocument Family
Using the XDocument Classes
Lesson Summary
Lesson Review
Lesson 3: Transforming XML Using
LINQ to XML
Transforming XML to Objects
Transforming XML to Text
Transforming XML to XML
Lesson Summary
Lesson Review
Case Scenario
Case Scenario: XML Web Service
Suggested Practices
Take a Practice Test
CHAPTER 6
ADO.NET Entity Framework
Before You Begin
Lesson 1: What Is the ADO.NET Entity
Framework?
Entity Framework Architecture
Overview
Entity Framework vs. LINQ to SQL
Modeling Data
Managing your Database Connection
and Context Using ObjectContext
More Modeling and Design
Implementing Inheritance in the Entity
Framework
POCO Entities
Lesson Summary
Lesson Review
Lesson 2: Querying and Updating with
the Entity Framework
Using LINQ to Entities to Query Your
Database
Introducing Entity SQL
Using ObjectContext to Submit
Changes to the Database
Lesson Summary
Lesson Review
Case Scenarios
Case Scenario 1: Choosing an ObjectRelational Mapper
Case Scenario 2: Using the Entity Framework
Suggested Practices
Create an Application That Uses LINQ to Entities
Queries
Create an Application That Modifies Data by Using
LINQ to Entities
Take a Practice Test
CHAPTER 7
WCF Data Services
Before You Begin
Lesson 1: What Is WCF Data Services?
Introducing OData
Creating a WCF Data Service
Querying Data through WCF Data Services
Lesson Summary
Lesson Review
Lesson 2: Consuming WCF Data Services
Adding a Client Application
Lesson Summary
Lesson Review
Case Scenario
Case Scenario: Exposing Data
Suggested Practices
Take a Practice Test
CHAPTER 8
Developing Reliable Applications
Before You Begin
Lesson 1: Monitoring and Collecting Performance Data
Implementing Instrumentation
Logging Queries
Accessing and Implementing Performance Counters
Lesson Summary
Lesson Review
Lesson 2: Handling Exceptions
Preventing Connection and Command Exceptions
Handling Connection and Query Exceptions
Handling Exceptions When Submitting Changes
Lesson Summary
Lesson Review
Lesson 3: Protecting Your Data
Encoding vs. Encryption
Symmetric Cryptography
Asymmetric Cryptography
Hashing and Salting
Digital Signatures
Encrypting Connections and Configuration Files
Principle of Least Privilege
Lesson Summary
Lesson Review
Lesson 4: Synchronizing Data
The Microsoft Sync Framework
Lesson Summary
Lesson Review
Case Scenario
Case Scenario: Data Synchronization
Suggested Practices
Take a Practice Test
CHAPTER 9
Deploying Your Application
Before You Begin
Lesson 1: Deploying Your Application
Packaging and Publishing from Visual Studio .NET
Deploying WCF Data Services Applications
Deployment for ASP.NET Websites
Silverlight Considerations
Deploying Entity Framework Metadata
Lesson Summary
Lesson Review
Case Scenario
Case Scenario: Data Synchronization
Suggested Practices
Take a Practice Test
Answers
About the Author
PUBLISHED BY
Microsoft Press
A Division of Microsoft Corporation
One Microsoft Way
Redmond, Washington 98052-6399
Copyright © 2011 by Glenn Johnson
All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any
means without the written permission of the publisher.
Library of Congress Control Number: 2011927329
ISBN: 978-0-7356-2739-0
Printed and bound in the United States of America.
Microsoft Press books are available through booksellers and distributors worldwide. If you need support related
to this book, email Microsoft Press Book Support at [email protected]. Please tell us what you think of
this book at http://www.microsoft.com/learning/booksurvey.
Microsoft and the trademarks listed at http://www.microsoft.com/about/legal/en/us/IntellectualProperty
/Trademarks/EN-US.aspx are trademarks of the Microsoft group of companies. All other marks are property of
their respective owners.
The example companies, organizations, products, domain names, email addresses, logos, people, places, and
events depicted herein are fictitious. No association with any real company, organization, product, domain name,
email 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 authors, Microsoft Corporation, nor its resellers, or
distributors will be held liable for any damages caused or alleged to be caused either directly or indirectly by
this book.
Acquisitions Editor: Martin Del Re
Developmental Editor: Karen Szall
Project Editor: Valerie Woolley
Editorial Production: nSight, Inc.
Technical Reviewer: Christophe Nasarre; Technical Review services provided by Content Master, a member of
CM Group, Ltd.
Copyeditor: Kerin Forsyth
Indexer: Luci Haskins
Cover: Twist Creative • Seattle
Exam 70-516: TS: Accessing Data with
Microsoft .NET Framework 4
OBJECTIVE CHAPTER LESSON
MODELING DATA (20%)
Map entities and relationships by using the Entity Data Model. Chapter 6 Lesson 1
Map entities and relationships by using LINQ to SQL. Chapter 4 Lesson 1
Create and customize entity objects. Chapter 6 Lesson 1
Connect a POCO model to the entity Framework. Chapter 6 Lesson 1
Create the database from the Entity Framework model. Chapter 6 Lesson 1
Create model-defined functions. Chapter 6 Lesson 1
MANAGING CONNECTIONS AND CONTEXT (18%)
Configure connection strings and providers. Chapter 2 Lesson 1
Create and manage a data connection. Chapter 2 Lesson 1
Secure a connection. Chapter 2 Lesson 1
Manage the DataContext and ObjectContext. Chapter 4
Chapter 6
Lesson 1
Lesson 1
Implement eager loading. Chapter 4
Chapter 6
Chapter 7
Lesson 1
Lesson 1
Lesson 1
Cache data. Chapter 1
Chapter 4
Lesson 1
Lesson 3
Configure ADO.NET Data Services. Chapter 7 Lesson 1, 2
QUERYING DATA (22%)
Execute a SQL query. Chapter 2 Lesson 2
Create a LINQ query. Chapter 3
Chapter 4
Lesson 1, 2
Lesson 2
Create an Entity SQL (ESQL) query. Chapter 3
Chapter 4
Chapter 6
Lesson 1, 2
Lesson 2
Lesson 2
Handle special data types. Chapter 1
Chapter 2
Lesson 2
Lesson 2
Query XML. Chapter 5 Lesson 1, 2, 3
Query data by using ADO.NET Data Services. Chapter 7 Lesson 1
MANIPULATING DATA (22%)
Create, update, or delete data by using SQL statements. Chapter 2 Lesson 2
Create, update, or delete data by using DataContext. Chapter 4 Lesson 3
Create, update, or delete data by using ObjectContext. Chapter 6 Lesson 2
Manage transactions. Chapter 2
Chapter 6
Lesson 3
Lesson 2
Create disconnected objects. Chapter 1 Lesson 1
DEVELOPING AND DEPLOYING RELIABLE APPLICATIONS (18%)
Monitor and collect performance data. Chapter 8 Lesson 1
Handle exceptions. Chapter 8 Lesson 2
Protect data. Chapter 8 Lesson 3
Synchronize data. Chapter 2
Chapter 8
Lesson 3
Lesson 4
Deploy ADO.NET components. Chapter 9 Lesson 1
Exam Objectives The exam objectives listed here are current as of this book’s publication date. Exam objectives
are subject to change at any time without prior notice and at Microsoft’s sole discretion. Please visit the Microsoft
Learning Web site for the most current listing of exam objectives: http://www.microsoft.com/learning/en/us/Exam
.aspx?ID=70-516.
Contents at a Glance
Introduction xiii
CHAPTER 1 ADO.NET Disconnected Classes 1
CHAPTER 2 ADO.NET Connected Classes 63
CHAPTER 3 Introducing LINQ 143
CHAPTER 4 LINQ to SQL 237
CHAPTER 5 LINQ to XML 295
CHAPTER 6 ADO.NET Entity Framework 359
CHAPTER 7 WCF Data Services 459
CHAPTER 8 Developing Reliable Applications 503
CHAPTER 9 Deploying Your Application 581
Answers 601
Index 623
vii
Contents
Introduction xiii
System Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Code Samples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Using the CD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Support & Feedback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Chapter 1 ADO.NET Disconnected Classes 1
Lesson 1: Working with the DataTable and DataSet Classes. . . . . . . . . . . . . 3
The DataTable Class 4
Using DataView as a Window into a Data Table 17
Using a DataSet Object to Coordinate Work Between
Data Tables 20
Lesson 2: Serialization, Specialized Types, and Data Binding. . . . . . . . . . . 34
Serializing and Deserializing the Data Table with XML Data 34
Serializing and Deserializing DataSet Objects 37
Handling Specialized Types 48
Data Binding Overview 51
Chapter 2 ADO.NET Connected Classes 63
Lesson 1: Connecting to the Data Store. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Using Providers to Move Data 65
Getting Started with the DbConnection Object 66
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:
www.microsoft.com/learning/booksurvey/
viii Contents
Storing the Connection String in the Application
Configuration File 75
Encrypted Communications to SQL Server 76
Storing Encrypted Connection Strings in Web Applications 76
Connection Pooling 77
Lesson 2: Reading and Writing Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
DbCommand Object 85
DbDataReader Object 89
Using Multiple Active Result Sets (MARS) to Execute
Multiple Commands on a Connection 91
Performing Bulk Copy Operations with a SqlBulkCopy Object 93
DbDataAdapter Object 95
DbProviderFactory Classes 101
Using DbException to Catch Provider Exceptions 105
Working with SQL Server User-Defined Types (UDTs) 105
Lesson 3: Working with Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
What Is a Transaction? 120
Concurrency Models and Database Locking 121
Transaction Isolation Levels 121
Single Transactions and Distributed Transactions 123
Creating a Transaction 123
Introducing the System.Transactions Namespace 126
Working with Distributed Transactions 130
Viewing Distributed Transactions 133
Chapter 3 Introducing LINQ 143
Lesson 1: Understanding LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
A LINQ Example 145
Deferred Execution 147
LINQ Providers 149
Features That Make Up LINQ 150
Lesson 2: Using LINQ Queries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Syntax-Based and Method-Based Queries 205
LINQ Keywords 208
Projections 210
Contents ix
Using the Let Keyword to Help with Projections 211
Specifying a Filter 211
Specifying a Sort Order 212
Paging 213
Joins 215
Grouping and Aggregation 221
Parallel LINQ (PLINQ) 223
Chapter 4 LINQ to SQL 237
Lesson 1: What Is LINQ to SQL?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Modeling Your Data 239
Examining the Designer Output 243
Managing Your Database Connection and Context
Using DataContext 249
Lesson 2: Executing Queries Using LINQ to SQL. . . . . . . . . . . . . . . . . . . . . 260
Basic Query with Filter and Sort 260
Projections 261
Inner Joins 262
Outer Joins 264
Grouping and Aggregation 267
Paging 268
Lesson 3: Submitting Changes to the Database. . . . . . . . . . . . . . . . . . . . . 277
Using DataContext to Track Changes and Cache Objects 277
The Life Cycle of an Entity 278
Modifying Existing Entities 280
Adding New Entities to DataContext 282
Deleting Entities 283
Using Stored Procedures 285
Using DataContext to Submit Changes 286
Submitting Changes in a Transaction 286
Chapter 5 LINQ to XML 295
Lesson 1: Working with the XmlDocument and XmlReader Classes. . . . 297
The XmlDocument Class 297
The XmlReader Class 306
x Contents
Lesson 2: Querying with LINQ to XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Introducing the XDocument Family 320
Using the XDocument Classes 328
Lesson 3: Transforming XML Using LINQ to XML . . . . . . . . . . . . . . . . . . . . 344
Transforming XML to Objects 344
Transforming XML to Text 347
Transforming XML to XML 348
Chapter 6 ADO.NET Entity Framework 359
Lesson 1: What Is the ADO.NET Entity Framework?. . . . . . . . . . . . . . . . . . 361
Entity Framework Architecture Overview 361
Entity Framework vs. LINQ to SQL 363
Modeling Data 365
Managing your Database Connection and Context
Using ObjectContext 376
More Modeling and Design 385
Implementing Inheritance in the Entity Framework 391
POCO Entities 407
Lesson 2: Querying and Updating with the Entity Framework. . . . . . . . . 421
Using LINQ to Entities to Query Your Database 421
Introducing Entity SQL 425
Using ObjectContext to Submit Changes to the Database 434
Chapter 7 WCF Data Services 459
Lesson 1: What Is WCF Data Services?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Introducing OData 461
Creating a WCF Data Service 462
Querying Data through WCF Data Services 471
Lesson 2: Consuming WCF Data Services. . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Adding a Client Application 482
Chapter 8 Developing Reliable Applications 503
Lesson 1: Monitoring and Collecting Performance Data. . . . . . . . . . . . . . 505
Implementing Instrumentation 505
Contents xi
Logging Queries 505
Accessing and Implementing Performance Counters 512
Lesson 2: Handling Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Preventing Connection and Command Exceptions 521
Handling Connection and Query Exceptions 523
Handling Exceptions When Submitting Changes 527
Lesson 3: Protecting Your Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Encoding vs. Encryption 537
Symmetric Cryptography 539
Asymmetric Cryptography 545
Hashing and Salting 549
Digital Signatures 552
Encrypting Connections and Configuration Files 554
Principle of Least Privilege 556
Lesson 4: Synchronizing Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
The Microsoft Sync Framework 560
Chapter 9 Deploying Your Application 581
Lesson 1: Deploying Your Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Packaging and Publishing from Visual Studio .NET 582
Deploying WCF Data Services Applications 583
Deployment for ASP.NET Websites 590
Silverlight Considerations 592
Deploying Entity Framework Metadata 593
Answers 601
Index 623
xii Contents
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:
www.microsoft.com/learning/booksurvey/
xiii
Introduction
This training kit is designed for developers who write or support applications that access data written in C# or Visual Basic using Visual Studio 2010 and the Microsoft .NET
Framework 4.0 and who also plan to take the Microsoft Certified Technology Specialist
(MCTS) exam 70-516. Before you begin using this kit, you must have a solid foundation-level
understanding of Microsoft C# or Microsoft Visual Basic and be familiar with Visual Studio
2010.
The material covered in this training kit and on exam 70-516 relates to the data access
technologies in ADO.NET 4.0 with Visual Studio 2010. The topics in this training kit cover what
you need to know for the exam as described on the Skills Measured tab for the exam, which is
available at http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-516&locale=en
-us#tab2.
By using this training kit, you will learn how to do the following:
■ Work with the ADO.NET disconnected classes
■ Work with the ADO.NET connection classes
■ Write and execute LINQ queries
■ Implement LINQ to SQL classes
■ Implement LINQ to XML in your applications
■ Implement the ADO.NET Entity Framework in your applications
■ Create and Implement WCF Data Service applications
■ Monitor and Collect ADO.NET performance data
■ Synchronize offline data
■ Deploy Data Access applications
Refer to the objective mapping page in the front of this book to see where in the book
each exam objective is covered.
System Requirements
The following are the minimum system requirements your computer needs to meet to
complete the practice exercises in this book and to run the companion CD. To minimize
the time and expense of configuring a physical computer for this training kit, it’s recommended, but not required, that you use a virtualized environment, which will allow you to
work in a sandboxed environment. This will let you make changes without worrying about
xiv Introduction
your day-to-day environment. Virtualization software is available from Microsoft (Virtual PC,
Virtual Server, and Hyper-V) and other suppliers such as VMware (VMware Workstation) and
Oracle (VirtualBox).
Hardware Requirements
Your computer should meet the following minimum hardware requirements:
■ 2.0 GB of RAM (more is recommended)
■ 80 GB of available hard disk space
■ DVD-ROM drive
■ Internet connectivity
Software Requirements
The following software is required to complete the practice exercises:
■ Windows 7. You can download an Evaluation Edition of Windows 7 at the Microsoft
Download Center at http://technet.microsoft.com/en-us/evalcenter/cc442495.
■ SQL Server 2008 Developer Edition is recommended because some labs and sample
code use this edition for permanently mounted databases. An Evaluation Edition is
available from http://msdn.microsoft.com/en-us/evalcenter/bb851668.aspx.
■ SQL Server 2008 Express Edition is recommended because some labs and sample code
use this edition for User Instance mounted databases. A full release is available from
http://www.microsoft.com/express/Database.
NOTE SQL SERVER INSTALLATION
If you are using a 64-bit OS, you should install 64-bit SQL Server before installing
Visual Studio 2010. Visual Studio 2010 includes, and attempts to install, the 32-bit SQL
Server 2008 Express Edition.
If you install the 64-bit versions of SQL Server first, the Visual Studio 2010 installer will see
that SQL Server Express Edition is already installed and will skip over installing the 32-bit
SQL Server 2008 Express Edition.
■ Visual Studio 2010. You can download an evaluation edition from http://msdn.microsoft
.com/en-us/evalcenter/default. Although the labs and code samples were generated
using Visual Studio 2010 Premium Edition, you can use the Express Edition of Visual
Studio for many of the labs, which is available from http://www.microsoft.com/express.
Introduction xv
Code Samples
The code samples are provided in Visual C# and Visual Basic. You will find a folder for each
chapter that contains CS (C#) and VB (Visual Basic) code. In these folders, you will find the
sample code solution and a folder for each lesson that contains the practice code. The
Practice Code folder contains Begin and Completed folders, so you can choose to start at the
beginning and work through the practice or you can run the completed solution.
Using the CD
A companion CD is included with this training kit. The companion CD contains the following:
■ Practice tests You can reinforce your understanding of the topics covered in this
training kit by using electronic practice tests that you customize to meet your needs.
You can run a practice test that is generated from the pool of Lesson Review questions
in this book. Alternatively, you can practice for the 70-516 certification exam by using
tests created from a pool of over 200 realistic exam questions, which give you many
practice exams to ensure that you are prepared.
■ Code Samples All of the Visual Basic and C# code you see in the book you will also
find on the CD.
■ An eBook An electronic version (eBook) of this book is included for when you do not
want to carry the printed book with you.
Companion Content for Digital Book Readers: If you bought a digital edition of this book, you can
enjoy select content from the print edition’s companion CD.
Visit http://go.microsoft.com/fwlink/?Linkid=216910 to get your downloadable content. This content
is always up-to-date and available to all readers.
How to Install the Practice Tests
To install the practice test software from the companion CD to your hard disk, perform the
following steps:
1. Insert the companion CD into your CD drive and accept the license agreement. A CD
menu appears.