Index

Symbols

=> (goes to) operator, 91

A

accessing

backing fields of properties, 22

SharePoint sites, 500

Add Connection dialog box, 530

Add Function Import dialog box, 363

Add New Item dialog box, 354, 503

Add statements, 382

adding

announcements to SharePoint, 501

attributes to nodes, 36

stored procedures, 363

Aggregate operator, 210, 216-219

Aggregate operators, 177, 210

Aggregate, 210, 216-219

Average, 210, 214-215

Count, 210-212

LongCount, 210-212

Max, 210-214

Min, 210-214

Sum, 210, 215-216

All operator, 181, 187

Ancestors( ) method, 408-409

Annotation( ) method, 461

annotations (XML), 459-461

anonymous types, 19, 79-82

class example, 81

passing out of methods, 81

query example, 82

querying collections of objects, 24-25

Any operator, 181, 186-187

APIs

Flickr, 495

LINQ to XML, 374

classes, 374

nodes, 374

XML attributes, creating, 377

XML declarations, creating, 378-381

XML documents, 378, 382-386

XML elements, creating, 375-377

AsEnumerable operator, 224

ASP.NET data binding, orders form example, 310-316

Data Source Configuration Wizard, 312-313

filters, 313

grid view, 314

order details in web page, 311

query results, configuring, 313

results, 315

AsParallel( ) method, 489

assigning delegates, 85

Association attribute (object relationships), 257

associations

EDM, 351

relationships, 236

Athena 495 See LINQ to Flickr

Attach( ) method (multitier entities), 302-305

attaching multitier entities, 302-305

attributes

adding to nodes, 36

Association (object relationships), 257

Column, 234

InheritanceMapping, 271

Table (entity classes, creating), 233

XML, creating, 377

XML nodes, 420

xmlns, 425

automatic properties, 69-73

C# 2.0 syntax, 70

example listing, 69

OperatorId, 70-71

OperatorName, 70

private setter, 73

prop snippet, 70

querying collections of objects, 21-22

Reflector generated code, 71-72

warnings, 72

Average operator, 210, 214-215

B

backing fields (properties), 22

binding orders form example

ASP.NET data binding, 311-315

smart client data binding, 306-309

Build C# key bindings, 544

business logic

entities, 474-476

separation of concerns, 474-476

C

C#

automatic properties, 69-73

deferred execution, 111-117

delegates, 83-89

Development Center web site, 11

expression trees, 122-128

extension methods, 94-103

IEnumerable<T> interface, 103-110

initializers, 74-77

iterators blog, 110

key bindings, 539-544

keywords/contextual keywords, 537-539

lambdas, 89-94

operator overrides, 117-121

partial methods, 66-69

programs, compiling, 524-526

sample programs, 520-521

types, 77-82

version numbers, 521

XML literals, 461-463

Calvert, Charlie blog, 10

Cast operator, 224

casting XML elements, 397

categories of operators, 175-177

ChangeConflictException, 295

character data (XML), 406-407

Chen, Raymond, 110

classes

Customer, 237, 263

DataContext, 234-236

entity

creating, 233-234

customizing, 341-344

Enumerable, 179

Extensions, 391

GetListEnumerator, 115

Item, 213

LINQ to XML

API, 374

hierarchy, 422

Musician, 145

MyNumberServer, 169-172

MyPartialClass, 67

NorthwindDataContext, 338-340

Order, 237, 263

partial, adding to entity classes, 343

persistent, 345-348

Process, 511

SpecialString, 97

tables to classes, mapping, 240-243

tables, mapping, 233-236

ValidationEventArgs, 457

XAttribute, 377

XContainer, 388-391

XDocument, 378, 390

XElement, 376, 390-391

XML, 387-388

XmlSchemaSet, 456

XNamespace, 427

XNode, 389-391

XObject, 415

clauses

from, 17, 132

group-by

projections, 154

query expressions, 132-141

let, 141-143

order, 162

query expressions, 131-132

select

projections, 154-155

query expressions, 17, 132

where, 17, 132

code generation web site, 536

collections

initializers, 16, 74-75

integers, querying, 14-20

collection intializers, 16

IEnumerable<T>, 19-20

query expressions, 16-18

type inferences, 18

objects, querying, 20

anonymous types, 24-25

automatic properties, 21-22

object initializers, 22-24

properties, 259

Column attribute, 234

command-line tools

edmgen.exe, 359

programs, compiling, 527-528

SqlMetal, 243

commands 408 See methods

compiling

C# programs, 524-526

programs from command line, 527-528

queries, LINQ to SQL, 277-278

composability, 7, 58-59, 517

composing

Element operators, 202-203

query expressions, 136

group-by clauses at the end, 136-139

group-by clauses in the middle, 139-141

into keyword, 141

let clauses, 141-143

Concat operator, 205

concurrency, managing, 290-292, 476-477

optimistic, 292

conflict detection, 292-295

conflict resolution, 295-297

limitations, 478

refreshing entities, 297-299

set of changes, 298

units of work, 478

Configure Behavior dialog box, 332

configuring CUD operations, 332

conflicts

detection, 292-295

resolution, 295-297

connections

databases, 528-530

Object Relational Designer, 531-533

Visual Studio 2008, 528-530

managing, 302

SharePoint, 503

Contains operator, 181, 188-190

content (XML), 372

context, defining, 479-480

contextual keywords

C#, 537-539

defined, 17

var, 18

continuations (query expressions), 141

Conversion AsEnumerable, 228

Conversion operators, 176, 223

AsEnumerable, 224

Cast, 224

OfType, 224-227

ToArray, 224-226

ToDictionary, 224, 227

ToList, 224-226

ToLookup, 224

core operators, 177

costs (performance), 480-481

Count operator, 210-212

CreateDatabase( ) method, 316-317

CreateDatabase sample program, 450

CreatePlanets sample program, 381

create, update, delete 330 See CUD operations

creating

database connections, 528-533

Object Relational Designer, 531-533

Visual Studio 2008, 528-530

databases with LINQ to SQL, 316-318

databases programmatically, 442-443

data schemas, viewing, 449

table declarations, 450

tables, creating, 444-447

XML data, transferring, 447-449

EDMs, 354

connections, 356

database generation, 354

expanding database objects, 356

generated model, 358

models, adding, 354

new items, adding, 354

selecting database objects, 356

entity classes, 233-234

Flickr application, 497-499

persistent classes, 345-348

XHTML, 431-437

XML

attributes, 377

declarations, 378-381

documents, 378, 382-383

elements, 375-377

CRUD (creating, reading, updating, and deleting) operations, 240, 361-362

CUD (create, update, delete) operations, 330-332

Customer class

Orders property, 237

OtherKey property, 237

relationship with Order class, 263

Customer object

LINQ to SQL Designer generated example, 55-56

query listing, 23

customers, moving orders between, 287

customizing

entity classes, 341-343

lifecycle events, 344

partial classes, adding, 343

service contract compatibility, 342

WCF DataContract attribute, 341-342

generated code, 337-338

entity classes, 341-344

NorthwindDataContext class, 338-340

D

data binding (LINQ to SQL), 305

ASP.NET, 310, 313, 316

smart client, 306, 309-310

Data Definition Language (DDL), 269

data shaping, 470-472

Data Source Configuration Wizard, 306

data selection, 313

launching, 312

data sources

adding new, 306

choosing, 306

Data Sources window, populating, 308

enabled by third-party LINQ providers, 44

Data Transfer Objects (DTOs), 471

Database Explorer, 437

databases

connections, 528-530

Object Relational Designer, 531-533

Visual Studio 2008, 528-530

creating with LINQ to SQL, 316-318

creating programmatically, 442-443

data schemas, viewing, 449

table declarations, 450

tables, creating, 444-447

XML data, transferring, 447-449

Northwind

DataContext class, customizing, 338-340

sample programs, 521

scalar-valued functions, adding, 328

stored procedures multiple results, 324

stored procedures single results, 322

TVFs, adding, 326

queries, 26-30

relational, 247

DataContext class

concurrency management, 478

mapping classes to tables, 234-236

performance optimization, 483

persistence-related services, 474

DDL (Data Definition Language), 269

Debugger integration with LINQ, 112

Debugging C# key bindings, 543

declarations

operators, 180

XML, 371-373

creating, 378-381

DOCTYPE, 434

declarative programming, 2, 7, 48-52, 383, 516

default namespaces (XML), 426-429

DefaultIfEmpty operator, 198, 203-204

deferred execution, 111-117

compiler code produced upon calling GetSequence( ) method, 114

foreach code execution, 113-114

iterator sequence example, 111-112

overview, 59

projections, 156-159

queries, 265

reasons for, 116

deferred loading (LINQ to SQL), 264-266

delegates, 83-86

assigning, 85

data sorting pattern, 85

generic, 86-89

MyDelegate example, 83-84

DeleteOnSubmit( ) method, 284

deleting

entities, 284-285

XML nodes, 417-418

DescendantNodes( ) method, 402-404

DescendantNodesAndSelf( ) method, 404

Descendants( ) method, 397-400

descendants (XML), 397-400

dialog boxes

Add Connection, 530

Add Function Import, 363

Add New Item, 354, 503

Configure Behavior, 332

New Project, 524

discreet computations, 60

Distinct operator, 204, 207

DOCTYPE declarations, 434

documents (XML)

creating, 378, 382-383

RSS feeds, loading, 385

saving to disks, 383, 386

dotting through relationships, 258

DTDs (Document Type Definitions), 453

DTOs (Data Transfer Objects), 471

dynamic SQL, 468-469

E

eager loading (LINQ to SQL), 266-268

Edit C# key bindings, 540

editing XML nodes, 418-419

EDM (Entity Data Model), 349-352

associations, 351

creating, 354

connections, 356

database generation, 354

expanding database objects, 356

generated model, 358

models, adding, 354

new items, adding, 354

selecting database objects, 356

CRUD operations, 361-362

generated code, 359-360

Generator, 359

relationships, 351

stored procedures, 362

adding, 363

mapping to methods, 363

parameters, mapping, 365

update procedure, 364

edmgen.exe command-line tool, 359

EF (Entity Framework), 349

associations, 351

CRUD operations, 361-362

EDM, 350-352

entity models, creating, 354

connections, 356

database generation, 354

expanding database objects, 356

generated model, 358

models, adding, 354

new items, adding, 354

selecting database objects, 356

generated code, 359-360

layers, 352-353

relationships, 351

stored procedures, 362

adding, 363

mapping to methods, 363

parameters, mapping, 365

update procedure, 364

Element operators, 176, 198

composing, 202-203

DefaultIfEmpty, 198, 203-204

ElementAt, 198, 202

ElementAtOrDefault, 198

First, 198

FirstOrDefault, 198-199

Last, 198, 200

LastOrDefault, 198-200

Single, 198, 201

SingleOrDefault, 198

ElementAt operator, 198, 202

ElementAtOrDefault operator, 198

elements (XML), 373

casting, 397

creating, 375-377

nodes, adding, 421

ElementsAfterSelf( ) method, 409

ElementsBeforeSelf( ) method, 409

Empty operator, 181, 186

enabling data sources, 44

ends (entity relationships), 351

entities 20 See also objects

business logic, 474-476

classes

creating, 233-234

customizing, 341-343

concurrent changes, 290-292

optimistic 292 See optimistic concurrency

refreshing entities, 297-299

set of changes, 298

connections, managing, 302

CUD operations, configuring, 332

data binding, 305

ASP.NET, 310, 313, 316

smart client, 306, 309-310

data shaping, 470-472

deleting, 284-285

inheritance, 269-274

class diagram, 269

class hierarchy on designer surface, 274

designers, 273

InheritanceMapping attribute, 271

inserting, 282-283

lifecycle, 282, 344

loading, 264

deferred, 264-266

eager, 266-268

modifying, 239-240

multitier, attaching, 302-305

object identity, 255-256

persistence, 473-474

refreshing, 297-299

relationships, 256-351

Association attribute, 257

collection properties, 259

dotting through, 258

joining tables, 260-262

managing, 286-288

mapping, 264

retrieving, 252-254

security, improving, 484-486

submitting changes, 288-290

transactions, 299-302

updating entities, 285-286

Entity Data Model 349 See EDM

Entity Data Model Wizard, 354

connections, 356

database generation, 354

expanding database objects, 356

generated model, 358

selecting database objects, 356

Entity Framework 349 See EF

EntityClient Data Provider layer, 352

EntityRef type (Order class), 237

Enumerable class, 179

Equality operators, 177

equijoins, 145

Except operator, 205-207

explicit conversion operators, 413

Express Tree Visualizer, 125

lambda expression, parsing, 126

LINQ to SQL code, parsing, 127

opening, 125

popup menu item example, 127

Expression property, 173

expression trees, 122-125, 128

Expression Tree Visualizer, 125-127

lambda based example, 123

parsing operations, 123-124

expressions (query)

clauses, 131-132

composing, 136-143

continuations, 141

IEnumerable<T> interface, 168

IQueryable<T> interface, 168, 172-173

joins, 143-153

MyNumberServer class, 169-172

nomenclature, 130

projections, 153

deferred execution, 156-159

new class in a select clause example, 154

overview, 154-156

SelectMany operator overloads, 164-167

SelectMany operators, 159-164

transforming objects into XML, 155

range variables, 133-135

Set operators, 208-210

extensibility, 7, 516

extensible provider model, 43-46

data sources enabled by third-party LINQ providers, 44

LinqToTerraServer example, 45

query operators, 46-48

extension methods, 2, 94-98

scoping, 98-103

static method string class example, 95-96

Extensions class, 391

F

FakeWeatherData program, 491-492

famous Romans code reuse example, 178

File C# key bindings, 540

files (XML)

creating, 34-36

loading, 536

parsing, 31-34

filters, choosing, 313

finding providers, 536

First operator, 198

FirstFourPlanets.xml, 392-393

names of planets code, 393

output, 394

FirstOrDefault operator, 198-199

flattening group joins, 261

Flickr, 495-499

FlickrXplorer application, 496

foreach loops

deferred execution, 113-114

operator code reuse, 178

querying collections of integers, 19

foundational qualities of LINQ, 516-517

foundations

composability, 58-59

declarative programming, 48-52

extensibility, 43-46

data sources enabled by third-party LINQ providers, 44

LinqToTerraServer example, 45

query operators, 46-48

hierarchies, 53-58

integration, 40-41

transformational powers, 60-61

unified method for querying, 42-43

from clauses (query expressions), 17, 132

from keyword (range variables), 135

fundamentals (XML), 370-371, 374

future

LINQ to Flickr, 495

API, 495

applications, creating, 497-499

download, 496

FlickrXplorer application, 496

web site, 495

LINQ to SharePoint

announcements, adding, 501

assemblies, registering, 502

connections, 503

example site, 501

LINQ to SharePoint Entity Wizard, 503

queries, 508

requirements, 500

site access, 500

site lists, choosing, 505

Solution Explorer example, 507

template, choosing, 503

web site, 499

wizard choices, reviewing, 50

PLINQ, 488-490

complexities, 494

FakeWeatherData program, 491-492

IParallelEnumerble interface, 489

LINQ query time differences, measuring, 493-494

Parallel Computing team web site, 488

ParallelQuery<int>, 489

performance improvements, 490

G

generated code

automatic properties, 71-72

customizing, 337-338

entity classes, 341-344

NorthwindDataContext class, 338-340

EF, 359-360

Generation operators, 177, 181

All, 181, 187

Any, 181, 186-187

Contains, 181, 188-190

Empty, 181, 186

Range, 181-183

Repeat, 181-185

generic delegates, 86-89

generics

overview, 9

syntax, 10

GetChangeSet( ) method, 298

GetListEnumerator class, 115

GetProcesses( ) method, 511

GetSequence( ) method, 113

GettingStartedWithLinqToXML sample program, 382

goes to (=>) operator, 91

graphical designer for mapping 531 See Object Relational Designer

group joins, 147-149, 261

group-by clauses

projections, 154

query expressions, 132

at the end, 136-139

in the middle, 139-141

GroupByOperators sample program

group-by clauses, 139

let clause, 142

Grouping operators, 177

H

handling conflicts, 295-297

hierarchies, 53-58

Customer object generated by LINQ to SQL Designer example, 55-56

two object relationship, 54

hierarchy, 7, 516

LINQ to XML classes, 422

XML, 372, 387-388

Hossain, Mehfuz, 496

I

identifiers (XML namespaces), 424

identity (objects), 255-256

IEnumerable<T> interface, 103-105

Element operators, composing, 202-203

enumeration, 106-108

implementing with yield return, 108

iterators, 108-110

operator support, 119

query expressions, 168

querying collections of integers, 19-20

sequences, 106

IEnumerator<T> interface, 107

IEqualityComparer interface, 188

IL (Intermediate Language), 22

immediate loading, 266-268

imperative programming, 48, 383

inferred types, 78-79

Informit web site, 11

inheritance (LINQ to SQL), 269-274

class diagram, 269

class hierarchy on designer surface, 274

designers, 273

InheritanceMapping attribute, 271

InheritanceMapping attribute, 271

initializers, 74

collection, 16, 74-75

object, 76-77

objects, 22-24

inner joins, 143-146

inserting

entities, 282-283

XML nodes, 420-421

InsertOnSubmit( ) method, 283

installing

.NET Framework, 522

SQL Server Express, 523

Visual Studio Express, 522

integration, 7, 40-41, 516

IntelliSense C# key bindings, 541

interfaces

IEnumerable<T>, 103-105

Element operators, composing, 202-203

enumeration, 106-108

implementing with yield return, 108

iterators, 108-110

operator support, 119

query expressions, 168

querying collections of integers, 19-20

sequences, 106

IEnumerator<T> interface, 107

IEqualityComparer, 188

IParallelEnumerable<int>, 489

IQueryable<T>, 172-173

IXmlLineInfo, 415

Intermediate Language (IL), 22

Intersect operator, 204-207

into keyword (query expressions), 141

into operators, 150

IParallelEnumerable interface, 489

IQueryable<T> interface, 172-173

IQueryable Toolkit, 496

IsPrimaryKey property (Column attribute), 234

IsState( ) method, 96

Item class, 213

IXmlLineInfo interface, 415

J

Join operators, 176, 260-262

joining tables, 260-262

joins, 143

equijoins, 145

group, 147-149, 261

inner, 143-146

left outer, 149-151

LINQ to SQL, 153

object-oriented model, 152-153

web site, 536

K

key bindings (C#), 539-544

keywords

C#, 537-539

contextual, 17-18

from, 135

into, 141

var, 78-79

Kulkarni, Dinesh blog, 11

L

lambdas, 2, 89-92

=> (goes to) operator, 91

C# 2.0 anonymous methods, compared, 92

exercises, 92-94

expression trees based on lambdas example, 123

local variables, 91

methods, compared, 90

query expressions role, 118

syntax, 89

Language Integrated Query 1 See LINQ

Last operator, 198-200

LastOrDefault operator, 198-200

layers (EF), 352-353

left outer joins, 149-151

let clauses (query expressions), 141-143

lifecycle (entities), 240, 282

deleting entities, 284-285

entity class customizations, 344

inserting entities, 282-283

managing relationships, 286-288

submitting changes, 288-290

updating entities, 285-286

line numbers (XML nodes), 414-417

LINQ (Language Integrated Query), 1

building blocks, 517

foundational qualities, 516-517

overview, 3

LINQ to Entities 349 See EF

LINQ to Flickr, 495

API, 495

applications, creating, 497-499

download, 496

FlickrXplorer application, 496

web site, 495

LINQ to Objects

LINQ to SQL, compared, 8-9, 105

providers for existing technologies, 509

system processes, querying, 510-511

LINQ to Relational technology, 366

LINQ to SharePoint, 499

announcements, adding, 501

assemblies, registering, 502

connections, 503

example site, 501

LINQ to SharePoint Entity Wizard, 503

queries, 508

requirements, 500

SharePoint site access, 500

site access, 500

site lists, choosing, 505

Solution Explorer example, 507

template, choosing, 503

web site, 499

wizard choices, reviewing, 506

LINQ to SharePoint Entity Wizard

choices, reviewing, 506

connections, 503

first page, 503

site lists, choosing, 505

LINQ to SQL 290

concurrent changes, 290-292

optimistic 292 See optimistic concurrency

refreshing entities, 297-299

set of changes, 298

connections, managing, 302

CRUD, 240

data binding, 305

ASP.NET, 310, 313, 316

smart client, 306, 309-310

databases, creating, 316-318

entities

deleting, 284-285

inserting, 282-283

modifying, 239-240

submitting changes, 288-290

relationships 236 See entities, relationships

retrieving, 252-254

updating entities, 285-286

expression tree, parsing, 127

inheritance, 269-274

Join operator, 260-261

joins, 153

LINQ to Objects, compared, 8-9, 105

LinqToSqlWithoutDesigner example, 26-30

loading options, 264-268

mapping classes to tables, 233-236

mapping tools

command-line, 243

graphical designer 531 See Object Relational Designer

multitier entities, attaching, 302-305

object identity, 255-256

overview, 231-233

performance

compiled queries, 277-278

queries versus results, 275-276

relationships, 236-239

security, 278-279, 484-486

stored procedures, 319

CUD operations, 330-332

executing, 322

mapping, 320

relationships, loading, 333-334

returning entity type example, 322-323

returning multiple results, 324-326

returning rows with key values example, 322

scalar-valued functions, 328-329

TVFs, 326-328

transactions, 299-302

transformation into XML, 60

translating, 248-250

base class library methods, 250

scalar UDFs, 251

T-SQL methods, 251

LINQ to SQL Designer

Customer object example, 55-56

generated code, customizing, 337-338

entity classes, 341-344

NorthwindDataContext class, 338-340

LINQ to XML 408

Ancestors( ) method, 408-409

annotations, 459-461

character data, 406-407

classes, 374, 422

databases, creating programmatically, 442-443

data schemas, viewing, 449

table declarations, 450

tables, creating, 444-447

XML data, transferring, 447-449

declarations, 434

DescendantNodes( ) method, 402-404

DescendantNodesAndSelf( ) method, 404

descendants, 397-400

ElementsBeforeSelf( )/ElementsAfterSelf( ) methods, 409

explicit conversion operators, 413

namespaces, 424-426

accidentally omitting, 436

default, 426-429

identifiers, 424

prefixes, 425

schema validation, 458-459

XHTML, creating, 435

nodes, 374

adding, 420-421

attributes, 420

deleting, 417-418

editing, 418-419

elements, 421

line numbers, 414, 417

missing, 411-414

parent nodes, 407-409

queries, 392

composition, 400-402

FirstFourPlanets.xml, 392-394

schema validation, 451-459

text node searches, 405

transformations, 429

relational data into XML, 437-442

XHTML, creating, 431-437

XML between formats, 430-431

XML data into databases, 447-449

XML

attributes, creating, 377

declarations, creating, 378-381

documents, creating, 378, 382-383

documents, saving to disks, 383, 386

elements, creating, 375-377

literals, 461-463

XML files

creating, 34-36

parsing, 31-34

XNamespace class, 427

LinqDataSource application example

Data Source Configuration Wizard, 312-313

filters, 313

grid view, 314

query results, configuring, 313

results, 315

LINQExtender, 496

LinqToSqlWithoutDesigner example, 26-30

LinqToTerraServer provider, 45

List<T>, declaring, 104

listings

anonymous class example, 81

automatic properties

C# 2.0 syntax, 70

example, 69

Reflector generated code, 71-72

Contains operator, 188

Count operator, 211

Customer objects

generated by LINQ to SQL Designer, 55-56

query, 23

databases, creating programmatically

table declarations, 450

tables, creating, 444-445

deferred execution, iterator sequence example, 111-112

DescendantNodes( ) method, 403

DescendantNodesSelf( ) method, 404

Descendants program, 398-399

Distinct operator, 207

enumerating with IEnumerator<T> interface, 107

Except method, 208

expression trees

lambda based, 123

parsing operations, 123-124

extension methods

scoping, 99-103

static method string class example, 95-96

FirstFourPlanets.xml, 392-393

names of planets code, 393

output, 394

Flickr application, 498

generic delegates example, 88

IEnumerable<T> interface, implementing with yield return, 108

inner joins, 143-145

Intersect operator, 206

left outer joins, 149

LINQ to SQL, LinqToSqlWithoutDesigner example, 26-30

LINQ to XML

customers who live in Mexico D.F., 31

data stored in Customers.xml file, 32

Min/Max operators

highest/lowest values in a sequence, 212

Item class/GetItems( ) method, 212

min/max values for complex types with multiple fields, 213

MyDelegate example, 83-84

MyNumberServer class, 169

object-oriented join model, 152

operator overrides, Where operator, 119-120

OrderByDescending operator, 221

Ordering operators, 220

partial method example, 67-68

projections

deferred execution, 158

new class in a select clause example, 154

SelectMany operators, 159

transforming objects into XML, 155

query expressions

group-by clauses, 139

let clause, 142

querying collections of integers, 14

relational data transformation into XML, 437-439

Repeat operator, 184

system processes, querying, 510-511

ToArray operator, 226

transformations, LINQ to SQL query into XML, 60

Union operator, 205

XHTML documents

creating, 432-434

example, 435

XML

annotations, 459

character data, 406-407

declarations, creating, 378-379

documents, creating one node at a time, 382

documents, example, 370

documents, saving to disks, 383

files, creating, 34

nodes, deleting, 417

schema validation example, 455-456

single node access, 401

Load( ) method, 385

loading

entities, 264

LINQ to SQL

deferred, 264-266

eager, 266-268

relationships, 333-334

XML files, 536

local variables, 91

locating operators, 179-181

LongCount operators, 210-212

M

managing

concurrency, 476-478

connections, 302

entity relationships, 286-288

transactions, 299-302

many-to-many relationships, 262

mapping

classes to tables, 233-236

relationships, 264

stored procedures, 320-322

methods, 363

parameters, 365

tables to classes, 240-243

TVFs, 327

Max operators, 210-214

metadata declarations, 121

methods 408

Ancestors ( ), 408-409

Annotation( ), 461

anonymous types, passing, 81

AsParallel( ), 489

Attach( ), 302-305

CreateDatabase( ), 316-317

DeleteOnSubmit( ), 284

DescendantNodes( ), 402-404

DescendantNodesAndSelf( ), 404

Descendants( ), 397-400

ElementsAfterSelf( ), 409

ElementsBeforeSelf( ), 409

extension, 2, 94-103

GetChangeSet( ), 298

GetProcesses( ), 511

GetSequence( ), 113

InsertOnSubmit( ), 283

IsState( ), 96

lambdas, compared, 90

LINQ to SQL translation, 250-251

Load( ), 385

MoveNext( ), 115

MyPartialMethod( ), 67

OnCreated( ), 339

OnRequiredDateChanged( ), 344

OnRequiredDateChanging( ), 344

partial, 66-69

ProcessList( ), 434

Refresh( ), 297

Resolve( ), 297

scalar UDFs, 251

ShowExcept( ), 208

ShowIntersect( ), 206

ShowRepeat( ), 184

ShowUnion( ), 205

StartsWith( ), 250

stored procedures, mapping, 363

SubmitChanges( ), 288-290

overriding, 340

performance optimization, 483

T-SQL, 251

ToString( ), 384

Validate( ), 456

ValidationEventHandler( ), 457

WriteFile( ), 68

XContainer class, 391

XElement class, 391

XNode class, 391

Microsoft

MVC download, 496

Office SharePoint Server 2007 VHD, 500

Min operator, 210-214

minimal update statements, 286

missing nodes (XML), 411-414

modifying entities, 239-240

ModifyNodes program, 417

MoveNext( ) method, 115

multitier entities, attaching, 302-305

Musician class, 145

MVC download, 496

MyDelegate example, 83-84

MyNumberServer class, 168-172

MyPartialClass class, 67

MyPartialMethod( ) method, 67

N

namespaces

System.Diagnostics, 510-511

System.Xml.Linq, 32

XML, 424-426

accidentally omitting, 436

default, 426-429

identifiers, 424

prefixes, 425

schema validation, 458-459

XHTML, creating, 435

Navigation C# key bindings, 541

.NET

Development web site, 535

Framework

installing, 522

version numbers, 521

web site, 536

New Project dialog box, 524

nodes (XML), 374

adding, 420-421

attributes, 36, 420

deleting, 417-418

editing, 418-419

elements, 421

line numbers, 414, 417

missing, 411-414

parents, 407-409

nomenclature (query expressions), 130

Northwind database

connections

Object Relational Designer, 531-533

Visual Studio 2008, 528-530

customizing, 338-340

DataContext class, customizing, 338-340

download, 521

sample programs, 521

scalar-valued functions, adding, 328

stored procedures, 322-324

TVFs, adding, 326

O

object initializers, 22-24, 76-77

object-oriented join model, 152-153

Object Relational Designer 531

database connections, creating, 531-533

mapping tables to classes, 240-243

Object Services layer, 352

objects 20 See also entities

collections, querying, 20

anonymous types, 24-25

automatic properties, 21-22

object initializers, 22-24

Customer, 23, 55-56

hierarchy example, 54

identity, 255-256

lifecycle, 240

references, 255

relationships, 236, 256-259

Association attribute, 257

collection properties, 259

defining, 236-238

dotting through, 258

joining tables, 260-262

mapping, 264

querying across, 238-239

OfType operator, 224-227

OnCreated( ) method, 339

OnRequiredDateChanged( ) method, 344

OnRequiredDateChanging( ) method, 344

operations

CRUD, 240, 361-362

CUD, 330-332

parsing, 123-124

OperatorId automatic property, 70-71

OperatorName automatic property, 70

operators

Aggregate, 177, 210

Aggregate, 210, 216-219

Average, 210, 214-215

Count, 210-212

LongCount, 210-212

Max, 210-214

Min, 210-214

Sum, 210, 215-216

categories, 175-177

choosing, 177

Conversion, 223

AsEnumerable, 224, 228

Cast, 224

OfType, 224-227

ToArray, 224-226

ToDictionary, 224, 227

ToList, 224-226

ToLookup, 224

core, 177

declarations, 180

Element, 176, 198

composing, 202-203

DefaultIfEmpty, 198, 203-204

ElementAt, 198, 202

ElementAtOrDefault, 198

First, 198

FirstOrDefault, 198-199

Last, 198-200

LastOrDefault, 198-200

Single, 198, 201

SingleOrDefault, 198

Equality, 177

explicit conversion, 413

famous Romans code reuse example, 178

foreach loop code reuse example, 178

Generation, 177, 181

All, 181, 187

Any, 181, 186-187

Contains, 181, 188-190

Empty, 181, 186

Range, 181-183

Repeat, 181-185

Grouping, 177

IEnumerable<T> interface support, 119

into, 150

Join, 176, 260-262

locating, 179-181

Ordering, 176, 219

OrderBy, 219-221

OrderByDescending, 219-222

Reverse, 219

Revise, 223

ThenBy, 219, 222-223

overriding, 117-121

Partitioning, 176, 192-193

Skip, 192-193

SkipWhile, 192, 196-197

Take, 192-193

TakeWhile, 192-195

Projection, 177

query, 46-48

Restriction, 177

SelectMany, projections, 159-167

SequenceEqual, 190-192

Set, 176, 204

Concat, 205

Distinct, 204, 207

Except, 205-207

Intersect, 204-207

query expressions, 208-210

SequenceEqual, 205

Union, 204-206

web site, 536

Where

filtering nodes, 34

implementing, 119-120

optimistic concurrency, 292

conflict detection, 292-295

conflict resolution, 295-297

limitations, 478

optimizing performance, 482-484

Order class

EntityRef type, 237

relationship with Customer class, 263

Storage property, 237

OrderByDescending operator, 219-222

OrderBy operator, 219-221

Ordering operators, 176, 219

OrderBy, 219-221

OrderByDescending, 219-222

Reverse, 219

Revise, 223

ThenBy, 219, 222-223

OrdersByCustomer stored procedure

loading Customer.Orders, 334

returning entity types, 322-323

orders form example, smart client data binding, 306

orders, moving between customers, 287

Orders property (Customer class), 237

OtherKey property (Customer class), 237

overriding

operators, 117-121

SubmitChanges( ) method, 340

P

Paldino, Nick, 81

Parallel Computing team web site, 488

Parallel LINQ 60 See PLINQ

ParallelQuery<int>, 489

parent nodes (XML), 407-409

parsing

operations, 123-124

XML files, 31-34

partial classes, adding to entity class, 343

partial methods, 66

example listing, 67-68

rules, 68-69

Partitioning operators, 176, 192-193

Skip, 192-193

SkipWhile, 192, 196-197

Take, 192-193

TakeWhile, 192-195

passing anonymous types out of methods, 81

performance

context, defining, 479-480

costs, 480-481

improving, 490

LINQ to SQL

compiled queries, 277-278

queries versus results, 275-276

optimizing, 482-484

persistent classes, creating, 345-348

persistence

DataContext services, 474

entities, 473-474

ignorance, 347

separation of concerns, 473-474

PLINQ (Parallel LINQ), 60, 488-490

complexities, 494

FakeWeatherData program, 491-492

IParallelEnumerable, 489

LINQ query time differences, measuring, 493-494

Parallel Computing team web site, 488

ParallelQuery<int>, 489

performance improvements, 490

prefixes (XML namespaces), 425

pre-LINQ mainstream programming languages versus queries, 515-516

private setter (automatic properties), 73

Process class, 511

ProcessList( ) method, 434

Projection operators, 177

projections, 153

deferred execution, 156-159

new class in a select clause example, 154

overview, 154-156

retrieving, 252-254

SelectMany operator overloads, 164-167

SelectMany operators, 159-164

SQL, 155

transforming objects into XML, 155

prop snippet, 70

properties

automatic, 69-73

querying collections of objects, 21-22

backing fields, 22

collection, 259

Expression, 173

IsPrimaryKey (Column attribute), 234

Orders (Customer class), 237

OtherKey (Customer class), 237

Storage (Orders class), 237

providers

finding, 536

LinqToTerraServer, 45

third-party, 44

Q

queries

collections of integers, 14-20

collections of objects, 20-25

databases, 26-30

deferred execution, 265

LINQ to XML, 392-394

LINQ to SQL, 275-278

PLINQ, 490

SharePoint, 508

system processes, 510-511

unified method, 42-43

versus pre-LINQ mainstream programming languages, 515-516

XML composition, 400-402

query expressions

beginning/ending, 16

clauses, 131-132

composing, 136-143

continuations, 141

IEnumerable<T>, 168

IQueryable<T>, 168, 172-173

joins, 143-153

lambdas, 118

MyNumberServer class, 169-172

nomenclature, 130

projections, 153

deferred execution, 156-159

new class in a select clause example, 154

overview, 154-156

SelectMany operator overloads, 164-167

SelectMany operators, 159-164

transforming objects into XML, 155

querying collections of integers, 16-18

range variables, 133-135

Set operators, 208-210

translating into query methods, 118

query methods, translating from query expressions, 118

query operators, 46-48

R

Range operator, 181-183

range variables (query expressions), 133-135

identifiers, introducing, 133

introducing, 135

types, explicitly stating, 134

Refactor C# key bindings, 543

reference sources, 10, 535

references (objects), 255

Reflector automatic property generated code, 71-72

Refresh( ) method, 297

refreshing entities, 297-299

relational data, transforming into XML, 437-442

relational databases, 247

relationships 236

association, 236

dotting through, 258

ends, 351

entities, 256-351

Association attribute, 257

collection properties, 259

dotting through, 258

joining tables, 260-262

managing, 286-288

mapping, 264

loading, 333-334

many-to-many, 262

objects, 236-239

unary, 351

Repeat operator, 181-185

Resolve( ) method, 297

resources, 10, 535

Restriction operators, 177

retrieving entities, 252-254

Reverse operator, 219

Revise operator, 223

Root MSDN Library web site, 535

root nodes (XML), 371

RSS feeds, loading to XML documents, 385

rules, partial method example, 68-69

S

sample sources, 10

saving XML documents, 383, 386

scalar UDFs, LINQ to SQL translation, 251

scalar-valued functions, 328-329

schema validation (XML), 451

documents, 452-453

DTD specification, 453

namespaces, 458-459

validating example, 455-457

XSD files, 454

scoping extension methods, 98-103

security

improving, 484-486

LINQ to SQL, 278-279

select clauses

projections, 154-155

query expressions, 17, 132

SelectMany operators, 159-167

self-referencing relationships, 351

separation of concerns

business logic, 474-476

persistence, 473-474

SequenceEqual operator, 190-192, 205

Server Explorer, 437

Set operators, 176, 204

Concat, 205

Distinct, 204, 207

Except, 205-207

Intersect, 204-207

query expressions, 208-210

SequenceEqual, 205

Union, 204-206

SharePoint 499 See LINQ to SharePoint

ShowExcept( ) method, 208

ShowIntersect( ) method, 206

ShowRepeat( ) method, 184

ShowUnion( ) method, 205

SimpleJoin program

group joins, 147

inner joins, 143-145

left outer joins, 149

simultaneous changes (entities), 290-292

optimistic, 292

conflict detection, 292-295

conflict resolution, 295-297

limitations, 478

refreshing entities, 297-299

set of changes, 298

single node access listing, 401

Single operator, 198-201

SingleOrDefault operator, 198

Skip operator, 192-193

SkipWhile operator, 192, 196-197

smart client data binding, orders form example, 306-310

binding object, choosing, 306

data source type, choosing, 306

Data Sources window, populating, 308

master-details form design view, 309

new data source, adding, 306

order form design view, 308

Smet, Bart De, 499

snippets, 70

Solution Explorer (SharePoint example), 507

source code web site, 519

SpecialString class, 97

SQL 290 See also LINQ to SQL

dynamic, 468-469

joins, 153

projections, 155-156

security, improving, 484-486

Server Express, installing, 523

SqlMetal, 243

StartsWith( ) method, 250

Storage property (Order class), 237

stored procedures, 319

CUD operations, 330-332

configuring on entities, 332

override methods, 330

update mapped to a method example, 331

EF, 362

adding, 363

mapping to methods, 363

parameters, mapping, 365

update procedure, 364

executing, 322

mapping, 320

relationships, loading, 333-334

returning

entity type example, 322-323

multiple results, 324-326

rows with key values example, 322

scalar-valued functions, 328-329

TVFs, 326-328

SubmitChanges( ) method, 288-290

overriding, 340

performance optimization, 483

Sum operator, 210, 215-216

syntax, 2, 10

system processes, querying, 510-511

System.Data.Linq web site, 536

System.Diagnostics namespace, 510-511

System.Linq web site, 536

System.Xml.Linq namespace, 32

System.Xml.Linq web site, 536

T

T-SQL methods, 251

Table attribute (entity classes, creating), 233

tables

classes to tables, mapping, 233

DataContext class, 234-236

entity classes, creating, 233-234

Object Relational Designer, 240-243

SqlMetal, 243

databases

creating, 444-447

declarations, 450

joining, 260-262

table-valued functions (TVFs), 326-328

Take operator, 192-193

TakeWhile operator, 192-195

TerraServer web site, 45

text node searches (XML), 405

ThenBy operator, 219, 222-223

third-party LINQ providers, 44

ToArray operator, 224-226

ToDictionary operator, 224, 227-228

ToList operator, 224-226

ToLookup operator, 224

ToString( ) method, 384

transactions, managing, 299-302

transformations, 60-61

LINQ to SQL query into XML, 60

select clause projections, 155

XML, 429

relational data into XML, 437-442

XHTML, creating, 431-437

XML between formats, 430-431

XML data into databases, 447-449

transformativity, 8, 517

translating LINQ to SQL, 248-250

base class library methods, 250

scalar UDFs, 251

T-SQL methods, 251

troubleshooting resources, 10

TVFs (table-valued functions), 326-328

types

anonymous, 24-25

C# 3.0, 77-82

EntityRef, 237

IEnumerable<T>, 19-20

inferences, querying collections of integers, 18

range variables, 134

XElement, 33

U

UDFs (user-defined functions), 251

unary relationships, 351

unified method for querying, 42-43

Union operator, 204-206

unitive LINQ, 7, 516

units of work

concurrency management, 478

performance optimization, 483-484

Update Wizard (EF designer), 363

updating entities, 285-286

using directives, 376

V

Validate( ) method, 456

ValidationEventArgs class, 457

ValidationEventHandler( ) method, 457

var contextual keyword, 18

var keyword (type inferences), 78-79

variables

local, 91

range, 133-135

Visual Basic, XML literals, 461-463

Visual Studio, database connections, creating, 528-530

Visual Studio Express, 522

W

WCF (Windows Communication Foundation), 341

WCF DataContract attribute (entity class customizations), 341-342

web sites

C#

Development Center, 11

iterators blog, 110

sample programs, 521

Calvert, Charlie blog, 10

code generation, 536

database connection blog, 528

EDM Generator, 359

Flickr, 495

download, 496

FlickrXplorer application, 496

Informit, 11

joins, 536

Kulkarni, Dinesh, 11

LINQExtender, 496

LINQ IQueryable Toolkit, 496

Microsoft Office SharePoint Server 2007 VHD, 500

MVC download, 496

.NET

Development, 535

Framework, 522, 536

Northwind database, 521

operators, 536

Parallel Computing team, 488

PLINQ complexities, 494

providers, finding, 536

references, 535

Root MSDN Library, 535

SharePoint, 499

source code, 519

SQL Server Express, 523

System.Data.Linq, 536

System.Linq, 536

System.Xml.Linq, 536

TerraServer, 45

Visual Studio Express, 522

where clauses (query expressions), 17, 132

Where operator

filtering nodes, 34

implementing, 119-120

Windows C# key bindings, 542

Windows Communication Foundation (WCF), 341

wizards

Data Source Configuration, 306, 312-313

Entity Data Model, 354-358

LINQ to SharePoint Entity, 503-506

Update (EF designer), 363

WriteFile( ) method, 68

X

XAttribute class, 377

XContainer class, 388-391

XDocument class, 378, 390

XElement class, 33, 376

methods, 391

XDocument class, compared, 390

XHTML, creating, 431-437

XML 408 See also LINQ to XML

Ancestors( ) method, 408-409

annotations, 459-461

attributes, creating, 377

character data, 406-407

class hierarchy, 387-388, 422

content, 372

databases, creating programmatically, 442-443

data schemas, viewing, 449

table declarations, 450

tables, creating, 444-447

XML data, transferring, 447-449

declarations, 371-373

creating, 378-381

DOCTYPE, 434

DescendantNodes( ) method, 402-404

DescendantNodesAndSelf( ) method, 404

descendants, 397-400

documents

creating, 378, 382-383

example, 370

RSS feeds, loading, 385

saving to disks, 383, 386

elements, 373

casting, 397

creating, 375-377

ElementsBeforeSelf( )/ElementsAfterSelf( ) methods, 409

Extensions class, 391

files

creating, 34-36

loading, 536

parsing, 31-34

FirstFourPlanets.xml, 392-394

fundamentals, 370-371, 374

hierarchy, 372

IXmlLineInfo interface, 415

literals, 461-463

namespaces, 424-426

accidentally omitting, 436

default, 426-429

identifiers, 424

prefixes, 425

schema Validation, 458-459

XHTML, creating, 435

nodes

adding, 420-421

attributes, 420

deleting, 417-418

editing, 418-419

elements, 421

line numbers, 414, 417

missing, 411-414

parent, 407-409

root, 371

queries, 392-394, 400-402

schema validation, 451

document not well formed example, 452-453

document validity, 453

DTD specification, 453

namespaces, 458-459

validating example, 455-457

XSD files, 454

single node access, 401

text node searches, 405

transformations, 429

relational data into XML, 437-442

XHTML, creating, 431-437

XML between formats, 430-431

XML data into databases, 447-449

using directives, 376

ValidationEventArgs class, 457

XContainer class, 389-391

XDocument class compared to XElement class, 390

XElement class, 391

XmlSchemaSet class, 456

XNamespace class, 427

XNode class, 389-391

XObject class, 392, 415

xmlns attribute, 425

XmlSchemaSet class, 456

XNamespace class, 427

XNode class, 389-391

XObject class, 392, 415

XSD files, 454

yield returns, 172

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset