1. Introducing the ADO.NET Entity Frameworkweb
ado.net entity framework 介紹 1sql
The Entity Relationship Model: Programming Against a Model,Not the Database數據庫
實體關係模型:使用模型編程,而非數據庫 2編程
The Entity Data Model: A Client-Side Data Modelc#
試題對象模型:客戶端對象模型 3api
Entities: Blueprints for Business Classes 6瀏覽器
實體:商業類藍圖緩存
The Backend Database: Your Choice 7安全
後臺數據庫:你的選擇服務器
Database Providers 8
數據庫提供者
Access and ODBC 9
Access和 odbc
Entity Framework Features: APIs and Tools 9
Ef 特性:APIS 和工具
Metadata 10
元數據
Entity Data Model Design Tools 10
實體模型設計工具
Object Services 11
Object Services
POCO Support 12
POCO 支持
Change Tracking 12
修改追蹤
Relationship Management and Foreign Keys 13
關係管理和外鍵
Data Binding 13
數據綁定
n-Tier Development 14
N層開發
EntityClient 14
實體客戶端
The Entity Framework and WCF Services 15
EF 和 WCF服務
What About ADO.NET DataSets and LINQ to SQL? 15
Ado.net 數據集 和 LINQ to sql 怎麼樣
DataSets 15
數據集
LINQ to SQL 16
Linq to sql
Entity Framework Pain Points Are Fading Away 16
實體框架不足之處正在減小
Programming the Entity Framework 17
使用EF編程
2. Exploring the Entity Data Model 19
探究實體對象模型
Why Use an Entity Data Model? 19
爲何使用實體對象模型
iii
Download from Library of Wow! eBook <www.wowebook.com>
The EDM Within the Entity Framework 20
EF中的EDM
Walkthrough: Building Your First EDM 21
創建第一個EFM
Inspecting the EDM in the Designer Window 24
在設計窗體中檢驗EDM
Entity Container Properties 26
實體容器 屬性
Entity Properties 26
實體屬性
Entity Property Properties 27
實體屬性的屬性
The Model’s Supporting Metadata 29
模型支持的元數據
Viewing the Model in the Model Browser 31
在模型瀏覽器中查看模型
Viewing the Model’s Raw XML 31
查看模型規則XML
CSDL: The Conceptual Schema 33
CSDL:概念模型
EntityContainer 34
實體容器
EntitySet 35
實體集合
EntityType 36
實體類型
Associations 38
關係
Navigation Property 41
導航屬性
Navigation Properties That Return Collections 42
集合類型的導航屬性
SSDL: The Store Schema 43
SSDL:存儲模型
MSL: The Mappings 45
MSL:映射
Database Views in the EDM 46
EDM中的數據庫視圖
Summary 47
彙總
3. Querying Entity Data Models 49
查詢實體數據模型
Query the Model, Not the Database 49
查詢模型,而非數據庫
Your First EDM Query 50
第一個EDM查詢
Where Did the Context and Classes Come From? 51
上下文和類的來源
Querying with LINQ to Entities 55
使用linq查詢實體
Writing Your First LINQ to Entities Query 55
編寫第一個使用linq查詢實體代碼
Querying with Object Services and Entity SQL 57
使用Object Serveices和 Entity Sql查詢
Why Another Way to Query? 57
爲什麼使用其餘方式查詢
Entity SQL 58
Entity Sql
The Parameterized ObjectQuery 60
參數化的對象查詢
Querying with Methods 61
使用方法查詢
Querying with LINQ Methods 61
使用linq 方法查詢
Querying with Query Builder Methods and Entity SQL 64
使用 query Builder方法和 entity sql 查詢
The Shortest Query 66
最簡短的查詢
ObjectQuery, ObjectSet, and LINQ to Entities 66
Querying with EntityClient to Return Streamed Data 68
使用EntityClient查詢返回流數據
EntityConnection and the Connection String 70
EntityConnection 和 鏈接字符串
EntityCommand 71
ExecuteReader 71
Forward-Only Access to the Fields 71
前進式訪問Fileds
Translating Entity Queries to Database Queries 71
將實體查詢轉換 爲數據庫查詢
Pay Attention to the .NET Method’s Impact on Generated SQL 72
關注。Net 方法對生成的sql的影響
iv | Table of Contents
Download from Library of Wow! eBook <www.wowebook.com>
Avoiding Inadvertent Query Execution 74
避免忽略查詢執行
Summary 75
總結
4. Exploring LINQ to Entities in Greater Depth 77
深刻探索 linq to entities
Getting Ready with Some New Lingo 78
引入一些新術語作準備
Projections in Queries 78
查詢轉換
Projections in LINQ to Entities 79
Linq 查詢實體的轉換
VB and C# Syntax Differences 79
Vb 和 c#的語法卻別
LINQ Projections and Special Language Features 80
Linq轉換和專有語言特色
Projections with LINQ Query Methods 84
linq 查詢方法轉換
Using Navigations in Queries 84
在查詢中使用導航
Navigating to an EntityReference 84
導航實體引用
Filtering and Sorting with an EntityReference 86
對實體引用進行過濾和排序
Navigating to Entity Collections 86
導航到實體集合
Projecting Properties from EntityCollection Entities 87
實體集合中的實體屬性的轉換
Filtering and Sorting with EntityCollections 88
對實體集合進行過濾和排序
Aggregates with EntityCollections 88
實體集合的彙集
Aggregates in LINQ Methods 89
Linq方法的彙集
Joins and Nested Queries 90
鏈接和嵌套查詢
Joins 90
鏈接
Nested Queries 91
嵌套查詢
Grouping 93
分組
Naming Properties When Grouping 94
分組時命名屬性
Chaining Aggregates 95
束縛彙集??
Filtering on Group Conditions 95
分組條件中過濾
Shaping Data Returned by Queries 97
塑造查詢返回數據
Limiting Which Related Data Is Returned 99
限制有關聯的數據的返回
Loading Related Data 100
加載關聯數據
Controlling Lazy Loading 101
控制延遲加載
Explicitly Loading Entity Collections and Entity References 101
顯式加載實體集合和實體引用
Using the Include Method to Eager-Load 103
使用liclude方法進行預先加載
Pros and Cons of Load and Include 106
加載和包含的利弊
Retrieving a Single Entity 107
檢索單個實體
Retrieving a Single Entity with GetObjectByKey 108
用 GetObjcetByKey檢索單個實體
Finding More Query Samples 109
尋找更多的查詢實例
Summary 109
總結
5. Exploring Entity SQL in Greater Depth 111
深刻探索entity sql
Literals in Entity SQL 111
Entity sql中的字面量
Expressing a DateTime Literal 112
表達DateTime字面量
Expressing a Decimal Literal 112
表達 Decimal字面量
Using Additional Literal Types 112
使用附加字面量類型
Projecting in Entity SQL 113
Entity sql的轉換(投影)
Table of Contents | v
Download from Library of Wow! eBook <www.wowebook.com>
DbDataRecords and Nonscalar Properties 114
Projecting with Query Builder Methods 115
Query Builder方法的轉換
Using Navigation in Entity SQL Queries 115
在entity sql 查詢中使用導航
Navigating to an EntityReference 115
導航到一個實體引用
Filtering and Sorting with an EntityReference 116
針對實體引用進行過濾和排序
Filtering and Sorting with EntityCollections 116
針對實體集合進行過濾和排序
Aggregating with EntityCollections 117
使用實體集合進行彙集
Using Entity SQL SET Operators 117
使用 entity sql 集合操做
Aggregating with Query Builder Methods 118
使用 query builder 方法彙集
Using Joins 118
使用鏈接
Nesting Queries 119
嵌套查詢
Grouping in Entity SQL 120
在entity sql中進行分組
Returning Entities from an Entity SQL GROUP BY Query 121
Entity sql group by查詢返回實體
Filtering Based on Group Properties 121
在分組屬性上過濾
Shaping Data with Entity SQL 122
使用entity sql 塑造數據
Using Include with an ObjectQuery and Entity SQL 123
ObjectQuery 和 entirysql 中使用 include
Understanding Entity SQL’s Wrapped and Unwrapped Results 124
理解entiry sql 的打包和非打包結果
Entity SQL Rules for Wrapped and Unwrapped Results 126
Entiry sql 針對打包和非打包結果的規則
Digging a Little Deeper into EntityClient’s Results 126
深刻挖掘 EntityClient 的結果
Summary 127
總結
6. Modifying Entities and Saving Changes 129
修改實體並保存更改
Keeping Track of Entities 129
保持實體的追蹤
Managing an Entity’s State 130
管理實體的狀態
Saving Changes Back to the Database 131
將修改保存到數據庫中
Inserting New Objects 134
插入新對象
Inserting New Parents and Children 135
插入新的父類和子類
Deleting Entities 137
刪除實體
Summary 139
總結
7. Using Stored Procedures with the EDM 141
在EDM中使用存儲過程
Updating the Model from a Database 142
從數據庫中更新模型
Working with Functions 143
使用方法
Function Attributes 144
方法屬性
Mapping Functions to Entities 146
映射方法和實體
Mapping Insert, Update, and Delete Functions to an Entity 148
映射插入更新和刪除方法到實體中
Inspecting Mappings in XML 152
在XML中檢查映射
Using Mapped Functions 153
使用映射的方法
Using the EDM Designer Model Browser to Import Additional
使用EDM 模型設計瀏覽器導入擴展
Functions into Your Model 155
模型中加入方法
Mapping the First of the Read Stored Procedures: ContactsbyState 156
映射首個讀取類型的存儲過程:ContactsbyState
Using Imported Functions 158
使用導入的方法
Avoiding Inadvertent Client-Side Processing 159
避免忽略客戶端處理
vi | Table of Contents
Download from Library of Wow! eBook <www.wowebook.com>
Mapping a Function to a Scalar Type 159
映射方法到一個標量類型
Mapping a Function to a Complex Type 160
映射方法到一個複合類型
Summary 163
8. Implementing a More Real-World Model 165
實現一個更真實的模型
Introducing the BreakAway Geek Adventures Business Model and Legacy Database 166
介紹 the BreakAway Geek Adventures Business 的模型和遺留數據庫
Creating a Separate Project for an EDM 168
在EDM中建立一個分支項目
Inspecting and Cleaning Up a New EDM 168
檢查並清理一個新的EDM
Modifying the Names of Entities and Properties 170
修改實體的名稱和屬性
Resolving Collisions Between Property Names and Entity Names 172
解決實體名稱和屬性名稱之間的複數矛盾
Cleaning Up Navigation Property Names 172
清理導航屬性名稱
Setting Default Values 174
設置默認值
Mapping Stored Procedures 175
配置存儲過程
Using the Use Original Value Checkbox in Update Mappings 176
使用「使用原有值」的複選框在更新映射中
Working with Many-to-Many Relationships 178
使用多對多的關係
Inspecting the Completed BreakAway Model 181
檢查完整的 BreakAway 模型
Building the BreakAway Model Assembly 182
構建 BreakAway 模型組合
Looking at the Compiled Assembly 183
觀看 編譯後的組合
Splitting Out the Model’s Metadata Files 184
分離模型的元數據文件
Summary 185
總結
9. Data Binding with Windows Forms and WPF Applications 187
在Windows Forms and WPF 應用程序中進行數據綁定
Data Binding with Windows Forms Applications 187
Windows Forms 程序中的數據綁定
Creating a Windows Forms Application 188
建立Windows Forms 應用程序
Using Windows Forms Data Sources 189
使用 Windows Forms 數據源
Creating an Object Data Source for a Customer Entity 190
爲Customer(顧客)實體建立一個 Object Data Source
Getting an Entity’s Details onto a Form 191
獲取實體的細節並展現在Form中
Adding Code to Query an EDM When a Form Loads 194
當Form加載事件中添加查看EDM的代碼
Binding Without a BindingSource 196
不適用BindingSource 綁定數據
Adding an EntityCollection to the Form 198
在窗體中加入實體集合
Displaying the Properties of Related Data in the Grid 199
在gird中顯示相關數據的屬性
Allowing Users to Edit Data 201
容許用戶修改數據
Editing Navigation Properties (and Shrinking the Query) 202
編輯導航屬性
Replacing the Navigation Property TextBoxes with ComboBoxes 204
替換導航屬性從文本框修改成複選框
Adding New Customers 208
增長新顧客
Deleting Reservations 211
刪除預約(訂閱,訂房)
Data Binding with WPF Applications 213
WPF應用程序中使用數據綁定
Creating the WPF Form 213
建立wpf窗體
Creating the WPF Project 214
建立wpf項目
Adding the Necessary Data Source Objects 215
增長必要的Data Source Objects
Inspecting the XAML and Code Generated by the Automated
檢查自動生成的XAML和代碼
Data Binding 215
數據綁定
Table of Contents | vii
Download from Library of Wow! eBook <www.wowebook.com>
Adding Code to Query the EDM When the Window Loads 216
在窗體加載事件中添加查詢EDM的代碼
Customizing the Display of the Controls 218
定製顯示控件
Selecting an Entity and Viewing Its Details 219
選擇一個實體並展現其明細
Adding Another EntityCollection to the Mix 222
增長其餘的實體集合到Mix
Editing Entities and Their Related Data 224
編輯實體和他們的關聯數據
Using Sort Descriptions to Keep Sorting in Sync with Data Modifications225
使用排序描述在修改數據的時候同步執行排序
Adding Items to the Child EntityCollection 226
在子集合中增長元素
The Last Task: Adding New Trips to the Catalog 227
最後的工做:目錄中增長新的協定
Summary 230
總結
10. Working with Object Services 231
使用object serveices
Where Does Object Services Fit into the Framework? 231
在framework中object services 的立足支出?
Processing Queries 233
處理查詢
Parsing Queries: From Query to Command Tree to SQL 234
解析查詢:query-》命令樹-》sql
Understanding Query Builder Methods 235
理解 Query Builder 方法
Analyzing a Query with ObjectQuery Methods and Properties 238
使用 ObjectQuery 的方法和屬性分析查詢
Executing Queries with ToList, ToArray, First or Single 241
使用ToList, ToArray, First or Single進行查詢
Executing Queries with the Execute Method 242
使用Execute方法執行查詢
Overriding a Default Connection with ObjectContext.Connection 242
使用ObjectContext.Connection重載默認鏈接
Handling Command Execution with EntityClient 244
掌握EntityClient中的 Command 執行
Materializing Objects 244
物化對象
Managing Object State 246
管理對象狀態
Using EntityKey to Manage Objects 246
使用EntityKey來管理對象
Merging Results into the Cache with MergeOptions 247
使用MergeOptions來說結果合併到緩存中。
Inspecting ObjectStateEntry 248
查看ObjectStateEntry
Maintaining EntityState 249
維護EntityState
Managing Relationships 252
管理關係
Attaching and Detaching Objects from the ObjectContext 253
ObjectContext中附加和分離對象
Taking Control of ObjectState 257
掌控ObjectState
ObjectStateManager Methods 257
ObjectStateManager 的方法
ObjectStateEntry State Methods for Managing State 258
ObjectStateEntry 中管理狀態的狀態方法
ObjectSet State Methods 259
ObjectSet 狀態方法
Sending Changes Back to the Database 259
將變化發送給數據庫
ObjectContext.SaveChanges 259
Affecting SaveChanges Default Behavior 260
影響SaveChanges的違約行爲
Overriding SaveChanges Completely 261
徹底重寫SaveChanges
Data Validation with the SavingChanges Event 261
SavingChanges 時間中校驗數據
Concurrency Management 261
併發管理
Transaction Support 262
事務支持
Implementing Serialization, Data Binding, and More 263
實現,序列化,數據綁定,等等
Object Services Supports XML and Binary Serialization 263
Object Services 支持xml和二進制的序列化
Object Services Supports Data Binding 265
Object Services 支持數據綁定
viii | Table of Contents
Download from Library of Wow! eBook <www.wowebook.com>
Summary 266
11. Customizing Entities 267
定製實體
Partial Classes 267
分佈類
Using Partial Methods 269
使用分佈方法
The OnContextCreated Method 269
OnContextCreated 方法
The On[Property]Changed and On[Property]Changing Methods 271
On[Property]Changed 和 On[Property]Changing 方法
Using PropertyChanged to Calculate Database-Computed Columns
使用 PropertyChanged 來計算數據庫計算列
Locally 273
本地化
Subscribing to Event Handlers 274
訂閱事件句柄
The ObjectContext.ObjectMaterialized Event 275
ObjectContext.ObjectMaterialized 事件
The ObjectContext.SavingChanges Event 276
ObjectContext.SavingChanges 事件
The EntityObject.PropertyChanging and EntityObject.PropertyChanged Events 280
EntityObject.PropertyChanging 和 EntityObject.PropertyChanged 事件 280
The AssociationChanged Event 282
AssociationChanged事件
Creating Your Own Partial Methods and Properties 284
建立分佈方法和屬性
Overriding the Object Constructor 284
重載 Object 構造器
Overriding ObjectContext.SaveChanges 285
重載 ObjectContext.SaveChanges 285
Creating Custom Properties 286
建立自定義屬性
Overloading Entity Creation Methods 289
重載 實體建立方法
Using Partial Classes for More Than Just Overriding Methods and Events 290
使用分佈類而不僅是重載方法和事件
Overriding Default Code Generation 291
重載默認的代碼生成
Switching to a Template 292
選擇模板
Reading the Template 292
讀取模板
Modifying the Template 293
修改模板
Customizing a Template for Major Class Modifications 295
爲主要類的變更定製模板
Switching Between the Default Template and a Custom Template 295
在默認模板和定製模板間切換選擇
Summary 296
總結
12. Data Binding with RAD ASP.NET Applications 297
Using the EntityDataSource Control to Access Flat Data 298
使用EntityDataSource空間訪問平數據
Creating the Hello Entities Project 298
建立 Hello entitys 項目
Creating a GridView and an EntityDataSource Concurrently 299
同步建立 GridView和EntityDataSouce
Configuring an EntityDataSource with Its Wizard 299
使用嚮導配置EntityDataSouce
Formatting the GridView 301
格式化GridView
Testing the Web Application 303
測試web程序
Understanding How the EntityDataSource Retrieves and Updates Your Data 304
理解EntityDataSouce如何去獲取和更新數據
EntityDataSource and Its Query 304
EntityDataSource的查詢
EntityDataSource and Its ObjectContext 305
EntityDataSource的ObjectContext
EntityDataSource Context Events 306
EntityDataSource 上線文事件
EntityDataSource and ViewState 306
EntityDataSource視圖狀態
Accessing Foreign Keys When There Is No Foreign Key Property 308
沒有外鍵屬性的狀況下訪問外鍵
Working with Related EntityReference Data 309
使用實體引用數據
Using EntityDataSource.Include to Get Related Data 309
使用EntityDataSource.Include獲取關聯數據
Displaying Data That Comes from EntityReference
顯示實體引用的數據
Navigation Properties 310
導航屬性
Using a New EntityDataSource Control to Enable Editing of EntityReference Navigation Properties 312
使用一個新EntityDataSource控件來啓用編輯實體導航屬性
Editing EntityReferences That Cannot Be Satisfied with a Drop-Down List 313
編輯沒法適用於下拉列表的實體引用
Binding an EntityDataSource to Another Control with Where Parameters 314
使用 where 參數將 EntityDataSource 和其餘控件綁定
Editing Related Data Concurrently with Multiple EntityDataSource Controls 316
使用複合EntityDataSource控件同步編輯有關聯數據
Working with Hierarchical Data in a Master/Detail Form 317
在主子窗體中使用分層數據
Setting Up the Web Application 317
創建web程序
Specifying Your Own Entity SQL Query Expression for an EntityDataSource 318
給 EntityDataSource 指定Entity Sql 查詢表達式
Binding a DropDownList to an EntityDataSource Control 319
將一個下拉列表綁定到 EntityDataSource 控件
Creating a Parent EntityDataSource That Is Controlled by the DropDownList and Provides Data to a DetailsView 320
建立一個已被下拉列表控制的父 EntityDataSource,並給明細視圖提供數據.
Using the EntityDataSource.Where Property to Filter Query Results 321
使用 EntityDataSource的where 屬性 來過濾查詢結果
Displaying Read-Only Child Data Through the Parent EntityDataSource 321
經過父級 EntityDataSource 來展現只讀子級數據
Using a New EntityDataSource to Add a Third Level of Hierarchical
Data to the Master/Detail Form 323
在主子窗體中新增一個EntityDataSource 來達到3層關係
Using the EntityDataSource.Inserting Event to Help with Newly
Added Entities 325
使用EntityDataSource.Inserting 事件來操做新增實體
Testing the Application 326
測試程序
Exploring EntityDataSource Events 327
探索 EntityDataSource事件
Building Dynamic Data Websites 329
創建動態數據web端
Summary 332
總結
13. Creating and Using POCO Entities 335
13.建立和使用 poco實體
Creating POCO Classes 336
建立poco類
Creating an ObjectContext Class to Manage the POCOs 339
建立ObjectContext類,來管理pocos
Change Tracking with POCOs 341
跟蹤Pocos的變化
Understanding the Importance of DetectChanges 341
利息額發現變化的重要性
Loading Related Data with POCOs 341
使用pocos加載關聯數據
Loading from the Context 342
從上下文中加載數據
Lazy Loading from a Dynamic Proxy 342
從動態代理中延遲加載數據
Exploring and Correcting POCOs’ Impact on Two-Way Relationships 342
探究並解決poco中的雙向依賴衝突
Using the DetectChanges Method to Fix Relationships 343
使用DetectChanges方法調整關係
Enabling Classes to Fix Their Own Relationships 344
啓用類的關係
Using Proxies to Enable Change Notification, Lazy Loading, and Relationship Fix-Up345
使用代理來啓用改變通知,延遲加載和關係修復
Change Notification by Proxy 346
用代理實現改變通知
Lazy Loading by Proxy 346
用代理實現延遲加載
Exploring the Proxy Classes 347
探究代理類
Synchronizing Relationships by Proxy 348
用代理實現關係同步
Using T4 to Generate POCO Classes 350
使用T4模板生成POCO類
Modifying the POCO Template 354
修改POCO模板
Creating a Model That Works with Preexisting Classes 358
對已存在的類建立模型
Code First: Using Entity Framework with No Model at All 359
Code first EF中不使用模型.
Summary 359
總結
14. Customizing Entity Data Models Using the EDM Designer 361
14使用EDM設計器定製實體數據模型
Mapping Table per Type Inheritance for Tables That Describe Derived Types 362
繼承類型的TPT映射
Mapping TPT Inheritance 363
映射TPT繼承
Querying Inherited Types 365
查詢有繼承類型
POCO Classes and Inherited Objects 366
POCO類和繼承對象
Inserting TPT Inherited Types 366
插入TPT繼承類型
Specifying or Excluding Derived Types in Queries 368
在查詢中指定或者排除派生類型
Creating New Derived Entities When the Base Entity Already Exists 370
根據已有的基類實體建立派生實體
TPT with Abstract Types 371
用抽象類型實現TPT
Mapping Unique Foreign Keys 373
映射惟一的外鍵
Mapping an Entity to More Than One Table 375
將多表映射到一個實體中
Merging Multiple Entities into One 376
將多個實體映射到一個表中
Querying, Editing, and Saving a Split Entity 378
查詢編輯和保存一個分割的實體
Mapping Stored Procedures to Split Tables and More 380
映射存儲過程到拆分表中
Splitting a Single Table into Multiple Entities 381
將一個表拆分到多個實體中
Filtering Entities with Conditional Mapping 383
根據條件映射配置過濾實體
Creating a Conditional Mapping for the Activity Entity 385
給活動實體建立一個條件式映射.
Querying, Inserting, and Saving with Conditional Mappings 385
查詢,插入,和保存條件式映射
Filtering on Other Types of Conditions 387
使用其餘類型的條件過濾
Removing the Conditional Mapping from Activity and Re-creating the Category Property 388
從活動類型移除條件式映射並重建類型屬性
Implementing Table per Hierarchy Inheritance for Tables That Contain Multiple Types 389
實現TPH
Creating the Resort Derived Type 390
建立Resort派生類型
Setting a Default (Computed) Value on the Table Schema 391
在表模型中設置默認(推算)值
Testing the TPH Mapping 392
測試TPH映射
Choosing to Turn a Base Class into an Abstract Class 393
選擇將基類轉換爲抽象類
Creating Complex Types to Encapsulate Sets of Properties 393
建立複合類型來封裝一些屬性
Defining a Complex Type 394
頂一個複合類型
Reusing Complex Types 396
重用複合類型
Querying, Creating, and Saving Entities That Contain Complex Types 397
查詢,建立和保存包含複合類型的實體
Removing the Complex Types from the Model 398
從模型中移除複合類型
Using Additional Customization Options 399
使用擴展定製選項
Using GUIDs for EntityKeys 399
永GUIDS做爲實體鍵
Mapping Stored Procedures 399
映射存儲過程
Mapping Multiple Entity Sets per Type 399
映射同類型的多個實體集合
Mapping Self-Referencing Associations 400
映射自引用
Summary 401
總結
15. Defining EDM Mappings That Are Not Supported by the Designer 403
定義設計器不支持的EDM映射
Using Model-Defined Functions 403
使用 模型預約義函數
Using Model-Defined Functions to Return More Complex Results 407
使用模型預約義函數來返回更多的複合結果
Consuming the Complex Results 408
定製複合結果
Reading the Results from a Complex Function 408
從複合函數中讀取結果
Mapping Table per Concrete (TPC) Type Inheritance for Tables with Overlapping Fields 409
映射TPC
Using QueryView to Create Read-Only Entities and Other Specialized Mappings 411
使用查詢視圖建立只讀實體和其餘指定的映射
Finding a Common Use Case for QueryView 413
爲查詢視圖的尋找一個常規用例.
Creating a CustomerNameAndID Entity 413
建立一個顧客實體,包含名稱和ID屬性
Creating a QueryView Mapping for CustomerNameAndID 414
爲顧客建立查詢視圖映射
Testing the QueryView 416
測試查詢視圖
Deconstructing the QueryView 416
析構查詢視圖
Summary 417
總結
16. Gaining Additional Stored Procedure and View Support in the Raw XML 419
從規則XML中過去擴展存儲過程和視圖支持
Reviewing Procedures, Views, and UDFs in the EDM 419
回顧EDM中的過程,視圖,和自定義函數
Working with Stored Procedures That Return Data 420
使用存儲過程返回數據
Using Functions That Match an Entity Whose Property Names Have Been Changed 420
使用函數來適應一個實體的屬性名稱被修改
Query Stored Procedures and Inherited Types 421
查詢存儲過程和繼承類型
Composing Queries Against Functions 423
對函數使用組合查詢
Replacing Stored Procedures with Views for Composability 423
爲知足可組合型,使用視圖來替換存儲過程
Queries That Return Multiple Result Sets 424
查詢多結果集的返回
Executing Queries on Demand with ExecuteStoreQuery 424
對ExecuteStoreQuery的需求執行查詢
Querying to a Class That Is Not an Entity 424
查詢非實體的類
Querying into an Entity 425
將實體做爲查詢結果
Adding Native Queries to the Model 426
增長模型的本地查詢
Defining a Complex Type in the Model Browser 427
在模型瀏覽器中定義複合類型
Adding Native Views to the Model 429
給模型增長本地視圖
DefiningQuery Is Already in Your Model 429
模型中已存在DefiningQuery
Using DefiningQuery to Create Your Own Views 431
使用DefiningQuery來建立視圖
Implementing a DefiningQuery 433
實現DefiningQuery
Creating Associations with the New Entity 437
給新實體建立關聯
Using DefiningQuery to Solve More Complex Problems 438
使用 DefiningQuery 來解決更多的複合問題
Using Commands That Affect the Database 440
使用commands操做上胡句酷
Executing SQL on the Fly with ExecuteStoreCommand 440
運行時使用ExecuteStoreCommand執行 sql
Using Functions to Manipulate Data in the Database 441
使用函數操做數據庫中的數據
Mapping Insert/Update/Delete to Types Within an Inheritance Structure 444
爲繼承性結構類型來映射插入,更新,刪除
What If Stored Procedures Affect Multiple Entities in an Inheritance
Structure? 445
若是存儲過程影響了繼承性結構的多實體,會怎麼樣
Implementing and Querying with User-Defined Functions (UDFs) 445
使用UDFs實現和查詢.
Summary 447
總結
17. Using EntityObjects in WCF Services 449
17.在WCF服務中使用實體對象
Planning for an Entity Framework–Agnostic Client 450
爲未知的客戶端規劃EF
Assessing the Pros and Cons of an Entity Framework–Agnostic
Consumer 451
爲未知用戶綜合評估EF
Building a Simple WCF Service with EntityObjects 452
使用EntityObjects 建立一個簡單的WCF服務.
Creating the Service 453
建立服務
Defining the Service Operations 454
定義服務選項
Defining Extra Service Classes 455
定義附加服務類
Exposing Custom Properties 456
曝光定製屬性
Implementing the Service Interface 457
實現服務接口
Adding Graphs to ObjectContext 460
給ObjectContext增長數據圖
Deleting Objects 461
刪除對象
Updating the Object Graph 463
刪除對象圖
Client Rules for Identifying Changes in an EntityCollection 463
控制實體集合中變化的客戶端規則
The UpdateCustomer Method 463
更新客戶的方法
Handling New and Existing Reservations 465
處理新增和已存在的預約
Deleting Reservations 466
刪除預約
Building a Simple Console App to Consume an EntityObject Service 467
建立簡單的控制檯程序來調用EntityObject Service
Enabling the Client Application to Receive Large Messages from the Service 468
讓客戶端程序來接收服務的大量消息
Creating Methods to Test the Service Operations 469
建立方法來測試服務選項
Analyzing the GetAndUpdateCustomer Method 473
解析GetAndUpdateCustomer 方法
Testing Out the Other Service Operations 474
測試其餘的服務選項
Creating WCF Data Services with Entities 474
使用實體建立WCF數據服務
Putting WCF Data Services in Perspective 475
透明的投擲wcf數據服務.
Creating a WCF Data Service 475
建立WCF數據服務
Filtering at the Service Level Using QueryInterceptor 480
使用查詢攔截器過濾服務層
Anticipating Exceptions 481
應用程序的異常
Exposing Related Data Through the Service 481
在服務中曝光關聯數據
Preparing for WCF Data Services’ Limitations 483
爲WCF數據服務的限制作準備
Modifying Data Through a Service 484
經過服務修改數據
Learning More About Creating and Consuming WCF Data Services 485
學習更多關於建立和調用WCF數據服務.
Table of Contents | xiii
Download from Library of Wow! eBook <www.wowebook.com>
Understanding How WCF RIA Services Relates to the Entity Framework 485
理解WCF RIA Services如何關聯到EF
Summary 487
總結
18. Using POCOs and Self-Tracking Entities in WCF Services 489
18.WCF服務中使用POCOS和自跟蹤實體
Creating WCF-Friendly POCO Classes 490
建立WCF-Friendly的POCO類
Updating the POCO Classes Based on the Current BreakAway Model 490
基於當前分離模型中更新POCO類
Isolating the POCO Entities in Their Own Project 491
將poco實體分離到獨立的項目中
Adding Custom Logic to the POCO Entities with a Base Class 493
使用poco實體的基類,增長定製邏輯
Following WCF Collection Rules 495
遵照wcf集合規則
Preventing Properties from Being Marked As Virtual 496
防止屬性被標識爲virtual
Building a WCF Service That Uses POCO Classes 497
使用POCO類,創建WCF服務
Implementing the Interface 498
實現接口
Using the Service 500
使用服務
Using the Self-Tracking Entities Template for WCF Services 503
爲WCF服務使用自跟蹤實體模板
Creating and Exploring the Self-Tracking Entities 503
建立並探究自跟蹤實體
Putting the Change-Tracking Logic Where It’s Needed 505
在須要的地方投遞改變追蹤邏輯
Creating a WCF Service That Uses Self-Tracking Entities 506
使用自跟蹤實體建立WCF服務
Watching Self-Tracking Entities Under the Covers 507
揭祕自跟蹤實體
Inspecting the Generated Context Class and Extensions 513
審查生成的上下文和擴展
Using POCO Entities with WCF Data and RIA Services 515
Wcf data 和ria services中使用poco實體
Preparing for WCF Data Services 515
準備wcf數據服務
Using POCO Entities in WCF RIA Services 517
在wcf ria services中使用poco實體
Sorting Out the Many Options for Creating Services 519
清理many 選項來建立服務
Summary 520
總結
19. Working with Relationships and Associations 521
使用依賴和關聯
Deconstructing Relationships in the Entity Data Model 522
解構實體數據模型中的依賴
Understanding How the Entity Data Model Wizard Creates the Association 523
理解實體數據模型嚮導的建立關聯
Understanding Additional Relationship Items 525
理解擴展以來節點
Handling Nonessential Navigation Properties 526
處理費必要導航屬性
Understanding the Major Differences Between Foreign Key Associations and Independent Associations 527
理解外鍵關聯和實現關聯之間的區別
Defining Associations in Metadata 528
在元數據中定義關聯
Detecting Associations at Runtime 528
運行時檢測關聯
Deconstructing Relationships Between Instantiated Entities 529
解構實例化的實體之間的依賴
Understanding Relationship Manager and the IRelatedEnd Interface 530
理解依賴管理器和IRelatedEnd接口
Late-Binding Relationships 530
遲綁定依賴
Taking a Peek Under the Covers: How Entity Framework Manages Relationships 531
揭祕:EF如何管理依賴
Understanding Navigation Properties 534
理解導航屬性
Understanding Referential Integrity and Constraints 537
理解引用完整性和約束
Implementing Deletes and Cascading Deletes 540
實現刪除和級聯刪除
Defining Relationships Between Entities 542
定義實體之間的依賴
The CLR Way: Setting a Navigation Property to an Entity 543
CLR 方式:設置實體的導航屬性
Setting a Foreign Key Property 544
設置外鍵屬性
Setting an EntityReference Using an EntityKey 544
利用EntityKey設置實體引用
Loading, Adding, and Attaching Navigation Properties 545
加載,增長,附加導航屬性
Lazy Loading 545
遲加載
EntityReference.Load and EntityCollection.Load 547
EntityReference.Load 和 EntityCollection.Load
Loading from Detached Entities: Lazy and Explicit 547
延遲或者顯式加載分離實體.
Using EntityCollection.Add 548
使用EntityCollection.Add
Using Attach and Remove 549
使用附加和移除
Moving an Entity to a New Graph 550
將實體遷移到新的圖中
Learning a Few Last Tricks to Make You a Relationship Pro 551
學一些新技巧來處理依賴關係
Using CreateSourceQuery to Enhance Deferred Loading 551
使用CreateSourceQuery來加強延遲加載
Getting a Foreign Key Value in an Independent Association 552
在實現關聯中獲取外鍵值
Summary 553
總結
20. Real World Apps: Connections, Transactions, Performance, and More 555
20.真實世界的程序:鏈接,事務,性能等等
Entity Framework and Connections 555
EF和鏈接
Overriding EntityConnection Defaults 556
重寫默認的EntityConnection
Working with Connection Strings Programmatically 557
以編程方式使用鏈接字符串
Opening and Closing Connections 560
打開和關閉鏈接
Getting the Store Connection from EntityConnection 562
從EntityConnection中獲取已有的鏈接
Disposing Connections 562
釋放鏈接
Pooling Connections 563
鏈接池
Fine-Tuning Transactions 564
微調事務
Why Use Your Own Transaction? 564
爲什麼使用本身的事務
Understanding Implicit Entity Framework Transactions 565
理解EF隱式事務
Specifying Your Own Read/Write Transactions 566
指定本身的讀寫事務
Specifying Your Own Read-Only Transactions 569
指定本身的只讀事務
Rolling Back Transactions 570
回滾事務
Understanding Security 571
理解安全
Guarding Against SQL Injection 571
防止sql注入
Guarding Against Connection Piggybacks 573
防止鏈接搭載
Fine-Tuning Performance 574
微調性能
Measuring Query Performance 575
測試查詢性能
Measuring Startup Performance 579
測試啓動性能
Reducing the Cost of Query Compilation 580
減小查詢編譯的性能消耗
Caching for Entity SQL Queries 580
Entity sql 的查詢緩存
Precompiling Views for Performance 582
預編譯視圖提高性能
Precompiling LINQ to Entities Queries for Performance 585
預編譯 linq to entities查詢提高性能
Fine-Tuning Updates for Performance? 589
微調更新提高性能
Lacking Support for Full Text Searches 590
缺乏全文搜索的支持
Exploiting Multithreaded Applications 591
有效的利用多線程程序
Forcing an ObjectContext to Use Its Own Thread 591
保證讓一個objectContext使用它本身的線程
Implementing Concurrent Thread Processing 593
實現併發線程處理
Exploiting .NET 4 Parallel Computing 596
有效的利用.net4的併發處理
Summary 596
總結
21. Manipulating Entities with ObjectStateManager and MetadataWorkspace 597
21.使用objectStat4eManger 和MetadataWorkspace來操控實體
Manipulating Entities and Their State with ObjectStateManager 598
使用ObjectStateManager操控實體以及其狀態
Refreshing Your High-Level Understanding of ObjectStateEntry 599
深刻理解ObjectStateEntry
Getting an ObjectStateManager and Its Entries 599
獲取ObjectStateManager和他的實體
Building Extension Methods to Overload GetObjectStateEntries 600
建立擴展方法來重載 GetObjectStateEntries
Building a Method to Return Managed Entities 602
建立方法來返回 Managed Entities
Using GetObjectStateEntry and TryGetObjectStateEntry 603
使用GetObjectStateEntry 和 TryGetObjectStateEntry
Mining Entity Details from ObjectStateEntry 604
從ObjectStateEntry中挖掘實體細節
Leveraging the ObjectStateManager During Saves 609
保存過程當中利用ObjectStateManager
Using ObjectStateManager to Build an EntityState Visualizer 611
使用ObjectStateManager來建立一個實體狀態觀察期
Retrieving an ObjectStateEntry Using an EntityKey 612
使用實體鍵獲取一個ObjectStateEntry
Reading the OriginalValues and CurrentValues of an ObjectStateEntry 613
讀取ObjectStateEntry的舊值和新值
Determining Whether a Property Has Been Modified 614
肯定屬性是否被修改
Displaying the State and Entity Type 614
顯示狀態和實體類型
Getting ComplexType Properties Out of ObjectStateEntry 615
從ObjectStateEntry獲取複雜類型屬性
Modifying Values with ObjectStateManager 619
使用ObjectStateManager修改值
Working with Relationships in ObjectStateManager 620
使用ObjectStateManager的關係
Using the MetadataWorkspace 622
使用MetadataWorkspace
Loading the MetadataWorkspace 622
加載MetadataWorkspace
Clearing the MetadataWorkspace from Memory 623
從內存中清除MetadataWorkspace
Understanding the MetadataWorkspace ItemCollections 624
理解MetadataWorkspace的元素集合
Retrieving Metadata from the MetadataWorkspace 625
從MetadataWorkspace獲取元數據
Querying the Metadata with LINQ to Objects 628
使用LINQ to Objects查詢元數據
Building Dynamic Queries and Reading Results 629
建立動態查詢並讀取結果
Building Entity SQL Queries Dynamically Using Metadata 629
使用元數據來動態建立Entity SQL 查詢
Creating Queries on the Fly with CreateObjectSet and Query Builder Methods 632
使用CreateObjectSet and Query Builder 方法建立運行時查詢
Reading the Results of a Dynamically Created Query 634
讀取動態建立查詢的結果
Creating and Manipulating Entities Dynamically 637
動態的建立和操控實體
Creating EntityObjects Without Entity Classes 637
不使用實體類建立實體對象
Creating Entities and Graphs Dynamically 640
動態建立實體和數據圖
Summary 643
總結
22. Handling Exceptions 645
22.處理異常
Preparing for Exceptions 645
爲異常作準備
Handling EntityConnectionString Exceptions 647
處理EntityConnectionString異常
Connection String Can’t Be Found or Is Improperly Configured:System.ArgumentException 648
鏈接字符串未找到或者不正確的配置: System.ArgumentException
Metadata Files Cannot Be Found: System.Data.MetadataException 648
元數據文件未找到: System.Data.MetadataException
Handling Connection String Exceptions 649
處理鏈接字符串異常
Handling Query Compilation Exceptions 649
處理查詢編譯異常
Invalid LINQ to Entities Query Expressions:System.NotSupportedException 649
無效的linq to entities 查詢異常:System.NotSupportedException
Invalid Entity SQL Query Expressions: EntitySqlException 650
無效的Entity SQL查詢異常: EntitySqlException
EntityCommandCompilationException Thrown by the Store Provider 652
存儲提供程序跑出的EntityCommandCompilationException
Creating a Common Wrapper to Handle Query Execution Exceptions 652
建立公共封裝來處理查詢執行異常
Handling Exceptions Thrown During SaveChanges Command Execution 654
處理SaveChanges 命令執行拋出的異常
UpdateException: Thrown When Independent Association Mapping Constraints Are Broken 654
UpdateException:當獨立的關聯映射中違背約束時拋出
UpdateException: Thrown by Broken Constraints in the Database 655
UpdateException:違背數據庫中的約束時拋出
Relying on Entity Framework to Automatically Roll Back When an UpdateException Occurs 656
當更新異常發生時依賴EF的自動回滾
Gleaning Details from UpdateException 656
回頭再看更新異常的詳情
Planning for Other Exceptions Related to the Entity Framework 657
爲跟EF相關的其餘異常作準備
Handling Concurrency Exceptions 658
處理併發異常
Summary 658
總結
23. Planning for Concurrency Problems 659
爲併發問題作準備
Understanding Database Concurrency Conflicts 660
理解數據庫併發衝突
Understanding Optimistic Concurrency Options in the Entity Framework
660
理解EF中的樂觀併發控制
Ignoring Concurrency Conflicts 661
忽略併發衝突
Forcing the User’s Data to the Server (ClientWins) 661
強制用戶數據在server端
Refreshing the User’s Data with Server Data (StoreWins) 661
根據服務器端的數據刷新用戶數據
Determining the Scope of Changes 662
肯定變化的範圍
Using rowversion (a.k.a. timestamp) for Concurrency Checks 662
使用行版本併發校驗
Implementing Optimistic Concurrency with the Entity Framework 663
使用EF實現樂觀併發
Flagging a Property for Concurrency Checking 664
標記一個屬性來做爲併發檢查
How the Entity Framework Uses the ConcurrencyMode Property 665
EF如何使用併發模型屬性
Concurrency Checking Without a rowversion Field 666
不使用rowversion字段做併發檢查
Concurrency Checking on a Checksum in the Data Store 666
使用數據存儲中的校驗和檢測併發
Concurrency Checks for EntityReference Navigation Properties 667
對實體銀行的導航屬性作併發檢查
Concurrency Checks and Inherited Types 667
繼承類型的併發檢查
Concurrency Checks and Stored Procedures 668
併發檢查和存儲過程
Handling OptimisticConcurrencyExceptions 670
處理樂觀併發異常
Using ObjectContext.Refresh 671
使用ObjectContext.Refresh
Using Refresh with ClientWins 671
ClientWins使用刷新
Using Refresh with StoreWins 673
StoreWins使用刷新
Refreshing Collections of Entities 673
刷新實體集合
Refreshing Related Entities in a Graph 675
刷新同一數據圖中的關聯實體
Rewinding and Starting Again, and Maybe Again After That 676
再來一遍,獲取之後須要再次面對
Reporting an Exception 678
報告異常
Handling Concurrency Exceptions at a Lower Level 678
低級的併發處理
Handling Exceptions in a Granular Way Without User Intervention 678
用精細的方式處理異常,不用用戶干涉
Handling Multiple Conflicts 680
處理多重衝突
Handling Exceptions When Transactions Are Your Own 682
事務中處理異常
Summary 683
總結
24. Building Persistent Ignorant, Testable Applications 685
建立持久透明化和可測試的程序
Testing the BreakAway Application Components 686
測試獨立的程序組件
Getting Started with Testing 687
開始測試
Writing an Integration Test That Hits the Database 687
對數據庫進行綜合測試
Inspecting a Failed Test 689
檢查錯誤的測試
Writing a Unit Test That Focuses on Custom Logic 689
爲指定邏輯編寫單元測試
Creating Persistent Ignorant Entities 693
穿件持久層透明的實體
Planning the Project Structure 695
準備項目結構
Starting with the Model and Its POCO Entities 697
着手模型和其對應的poco實體
Building an Interface to Represent a Context 698
建立描述上下文的接口
Modifying the BAEntities ObjectContext Class to Implement the New Interface 699
修改 BAEntities ObjectContex 來實現新接口
Creating the IEntityRepository Interface 702
建立 IEntityRepository 接口
Creating the Repository Classes 703
建立Repository類
Testing GetReservationsForCustomer Against the Database 706
針對數據庫測試GetReservationsForCustomer
Creating a Fake Context 708
建立模擬上下文
Creating a FakeObjectSet Class 710
建立模擬對象集合類
Completing the Fake Context 712
完成模擬上下文
Building Tests That Do Not Hit the Database 714
建立非命中數據庫的測試
Adding Validation Logic to the POCO Class 714
Poco類增長校驗邏輯
Adding Validation Logic to the Context 716
上下文增長校驗邏輯
Providing ManagedEntities in the FakeContext 716
在模擬上下文中提供ManagedEntities
Hiding the Context from the Lower Layers with Unit of Work 718
單元工做中隱藏底層上下文
Testing UnitOfWork Against the Database 720
針對數據庫測試單元工做
Enabling Eager Loading in IContext 721
IContext中啓用 Eager Loading
Leveraging Precompiled Queries in Your Repositories 722
倉儲中利用預編譯查詢
Using the New Infrastructure in Your Application 723
在程序中使用新的基礎架構
Adding a UI Layer That Calls the Repository 723
增長UI層調用倉儲
Application Architecture Benefits from Designing Testable Code 724
設計可測試的程序架構的好處
Considering Mocking Frameworks? 725
考慮Mocking Frameworks
Summary 725
總結
25. Domain-Centric Modeling 727
25.領域爲重心的模型
Creating a Model and Database Using Model First 728
使用model first 建立模型和數據庫
Creating a Conceptual Model in the Designer 728
設計器中建立概念模型
Creating the Entities 730
建立實體
Creating Association and Inheritance Hierarchies 734
建立關聯和繼承體系
Generating Database Schema from the Model 738
從模型生成數據庫架構
Creating the Database and Its Schema 744
建立數據庫和他的架構
Overriding the DDL Generation 745
重寫 DDL 生成
Using the Feature CTP Code-First Add-On 747
使用code-first中增長的特性CTP
Understanding Code-First Design 749
理解 code-first設計
Installing the Feature CTP 751
安裝CTP特性
Exploring Some Configuration Examples 751
搜索一些配置案例
Testing the Code-First Application and Database 753
測試code-first程序和數據庫
Using SQL Server Modeling’s 「M」 Language 755
使用 sqlserver 模型的M語言
Using M Metadata in Entity Framework Applications 758
在EF程序中使用M元數據
Summary 759
總結
26. Using Entities in Layered Client-Side Applications 761
26.在分層客戶端程序中使用實體
Isolating the ObjectContext 762
分離 objectcontext;
Freeing Entities from Change Tracking 764
變化跟蹤中釋放實體
Enabling Change Tracking Across Tiers 766
層中啓用變化跟蹤
Moving Other ObjectContext-Dependent Logic to the DataBridge 768
將所依賴的其餘ObjectContext 邏輯移動到 dataBridge
Ensuring That Lazy Loading Doesn’t Negatively Impact the Layered Application 772
確保延遲加載不會給分層程序形成負面影響
Noting Additional Benefits of the Layered Application 773
注意分層程序的額外好處
Separating Entity-Specific Logic from ObjectContext Logic 774
從objectContext邏輯中分離實體特有的邏輯
Working with POCO Entities 778
使用POCO實體
Providing EntityState 779
提供EntityState
Providing Logic in Place of Other EntityObject Behavior 781
提供邏輯來替換EntityObject的行爲
Summary 782
總結
27. Building Layered Web Applications 783
27.創建分層web程序
Understanding How ObjectContext Fits into the Web Page Life Cycle 783
理解ObjectContext如何適應web頁面的生命週期
Return Results, Not Queries, from the DataBridge Class 785
返回dataBridge類的非查詢結果
Using Entities in Read-Only Web Pages 786
在只讀web頁中使用實體
Exploring Options for Updating Entities in an ASP.NET Web Forms Application 788
搜索 asp.net web forms中更新實體的選項
Comparing ASP.NET’s State Solutions to the Needs of the Entity Framework 789
將asp.net的狀態解決方案作比較來看EF的必要性
Building an N-Tier Web Forms Application 793
建立 n-層web forms程序
Designing the Application 794
設計程序
Using the Existing Repositories 795
使用現有的倉儲
Building an Entity Manager to Act As a DataBridge 795
Act中建立實體管理器做爲數據橋樑
Retrieving Data for Display and for Future Updates 797
獲取數據來顯示以及以後的更新
Making the Related Data Accessible to the Client 799
使得關聯的數據可以被客戶端訪問
Getting Data from the Manager to the Client 800
從管理器中獲取數據給客戶端
Adding Lists for User Selection Controls 803
給用戶增長選擇控制的列表
Allowing a User to Modify Related Data 805
容許用戶修改關聯數據
Building an ASP.NET MVC Application 806
建立 一個asp.net mvc程序
Replacing the Context with Repositories 813
使用倉儲來替換上下文
Editing Entities and Graphs on an MVC Application 814
在MVC程序中編輯實體和數據圖
Creating a Repository for Payments 817
建立倉儲做爲提供者
Interacting with the ReservationController 817
使用預約控制器
Summary 818
總結
A. Entity Framework Assemblies and Namespaces 821
B. Data-Binding with Complex Types 825
C. Additional Details About Entity Data Model Metadata 831
Index 839