Errata

Exam Ref 70-487: Developing Windows Azure and Web Services

Errata for Exam Ref 70-487: Developing Windows Azure and Web Services

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed, PDF Page Missing Test DB in chapter one.
Page 14

References to TestDB which was not provided.

Failure to mention the version of Entity Framework used (6 or 5)
Failure to mention the unit tests are of the NUnit variety.

I'm a seasoned developer and I'm having a hard time getting through chapter one. Way too many omissions.

Anonymous  Dec 21, 2013 
Printed Page 14
Section: Building an EF Model using the Entity Data Model Wizard

The first sentence of this section states: "This section shows you how to build a simple model against the TestDB created in the beginning of Chapter 1." There was no reference in Chapter 1 previous to this section which detailed creating any database

Troy Jerkins  Dec 05, 2013 
Printed Page 14
2nd paragraph, section "Building an EF Model using the Entity Data Model Wizard" first sentence

I would like to point out that pg 14 section Building an EF Model using the Entity Data Model Wizard, first sentence ?????TestDB created in the beginning of Chapter 1.? There was no section that speaks on the creation of the database, tables and constraints. Would have been great if there was a section or a sample database that could be downloaded. Is it available from the authors?

Janaka Abeyaratna  Dec 10, 2013 
Printed Page 25-27
whole page

No headings when describing 5 properties of ContextOptions makes it unclear which property is described.

Mark Hendriksen  Dec 08, 2013 
PDF Page 26
Note

- First of all, you did not say what is the case you gonna explain. In the beginning you must write: 25 MB will be transferred using chunky approach versus 10 MB using chatty approach 1 MB per time.
- If what I am saying is true, you may have a typo or a minor mistake:
After adding the 100 ms delay per a round-trip, you have to add just 1 second for 10 MB (not 10 seconds as you stated, supposing that we transfer 1 MB per a round trip call).

But the ideas is clear.

Ibrahem Khalil  Jan 03, 2014 
PDF Page 82
Table 1-11

$inlinecount -> it's the calculated count after applying any $filter present in the URI (not the count of the returning entities)
As an example:
http://servicehost/ExamPrepService.svc/Questions?$inlinecount=allpages&$top=10&$filter=id gt 5
Identifies the first 10 Questions Entries whose IDs are greater than 5 and includes a count of the total number of Questions Entries that have an ID greater than 5.

$orderBy -> please, give a note that the default order is asc unless otherwise specified (asc desc),
$top -> In the behavior column, the URI will skip 10 and return the next 5 after that (not 10)

Ibrahem Khalil  Jan 04, 2014 
PDF Page 95
XML

You must define the variable xml and specify its type as string so you can use it later as
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

So the XML snippet should starts with:
string xml = "
and ends with
";

Ibrahem Khalil  Jan 04, 2014 
PDF Page 105
Objective 1.1: Review ... Qu. 1

I don't think that C is correct answer, because before "Run the Update Model Wizard" the field is supposed to be added to the db first.
Same logic with option D

Ibrahem Khalil  Jan 03, 2014 
PDF Page 109
Objective 1.5: Review : Qu 3

None is correct,
Option D is missing '$' filter word, even if this is just a type, in the code snippet in the question, there is 'descending' in the orderby clause. So the right should be:
http://Service/Question.svc/Questions?Orderby=QuestionId desc&$filter=QuestionNumber gt 30

'desc' word should be after the Orderby=QuestionId

And by the way, what is that extra '?' after the '&' in most of options?!

Ibrahem Khalil  Jan 04, 2014 
PDF Page 123
Code

- SqlConnectionStringBuilder donnBuilder = new SqlConnectionStringBuilder();
-> donnBuilder should be renamed to be ConnBuilder

- efBuilder.Provider = Provider;
-> P of Provider must be small letter as in its definition.
String provider = "System.Data.SqlClient";

Suggestion: ConnBuilder should be connBuilder with small letter c

Ibrahem Khalil  Jan 05, 2014 
PDF, ePub Page 125
1st paragraph

> If you examine the DbContext class, you do not find a
> BeginTransaction method or anything nominally similar.
> The SaveChanges method initiates a Save on all the
> modified items and initiates a transaction on an item-by-item basis

This appears to be incorrect. With ObjectContext, MSDN actually says that a transaction is used: http://msdn.microsoft.com/en-us/library/bb336792.aspx

With DbContext, the source code certainly looks like it is committing all changes encapsulated within the same transaction.

Conclusion: SaveChanges does use the same transaction for all items to be saved.

Michael  Jan 23, 2014 
PDF Page 131
Objective review - Qu. 1

Depending on the answer, you must add (Choose all that apply.) at the end if the question.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 141
Performing synchronous and asynchronous operations

.NET v. 4.5 have new methods:
-SqlCommand.ExecuteReaderAsync
SqlCommand.ExecuteReaderAsync(CancellationToken)
SqlCommand.ExecuteReaderAsync(CommandBehavior, CancellationToken)

-SqlCommand.ExecuteXmlReaderAsync
SqlCommand.ExecuteXmlReaderAsync(CancellationToken)

-SqlCommand.ExecuteNonQueryAsync
SqlCommand.ExecuteXmlReaderAsync(CancellationToken)

And asynchronous version of ExecuteScalar has been added finally:
DbCommand.ExecuteScalarAsync
SqlCommand.ExecuteScalarAsync(CancellationToken)

Difference between BeginX and XAsync are:
- BeginX has an overload method that takes an AsyncCallback delegate that is invoked when the command's execution has completed.
- XAsync; as obvious, can take the cancellation instruction.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 142
Code Snippet

IAsyncResult sqlResult sqlCommand.BeginExecuteReader(CommandBehavior.
CloseConnection);
=> missing =

using (SqlDataReader sqlReader = sqlCommand.EndExecuteReader(Result))
=> Result must be sqlResult

Ibrahem Khalil  Jan 05, 2014 
PDF Page 145
Qu. 3

This question should be added to objective 2.3 no on 2.4.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 156
ObjectContext: 1st paragraph

Next, the properties inside the context are typed as DbSet types instead of
ObjectSet types.

DbSet and ObjectSet must replace each other.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 161
Qu. 2

(Choose all that apply) must be added to the question.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 161
Qu. 3

Should be added to "Objective 1.1" not the current one.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 163
Objective 2.2: Thought experiment - Bullet 1

I think that is not related to the original question: "1. Would using the Entity providers help facilitate the transition?"
I think you should change the question or modify the answer.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 165
Objective 2.3: Review

Qu. 2 is missing, no such question. So it must be deleted and Qu. 3 to be renamed to be Qu. 2.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 166
Objective 2.4: Review. Qu. 1

B and C should be replaced each other here or in the question options itself.

Ibrahem Khalil  Jan 05, 2014 
PDF Page 187
5th paragraph

The 3rd word "DataContract" should be replaced with "IsReference"

Ibrahem Khalil  Jan 06, 2014 
PDF Page 193
Figure 3.7

Figure 3.7 must show the WCF processing pipeline, however it shows something completely different. The same in the .mobi version.

David  Dec 15, 2013 
PDF Page 211
Objective summary

I think bullets 2 and 3 should be moved to objective 3.2

Ibrahem Khalil  Jan 06, 2014 
PDF Page 219
OneWay attribute, step 5

You have never explained OneWay attribute till this point.

Ibrahem Khalil  Jan 06, 2014 
PDF Page 226
Qu. 3

(Choose all that apply) must be added to the question.

Ibrahem Khalil  Jan 06, 2014 
PDF Page 260
Implementing Windows Azure service bus and Windows Azure queues

This section is intended to be and Objective but it is not.
(Check "bookmarks" panel)

Ibrahem Khalil  Jan 07, 2014 
ePub Page 272
Objective 3.3 Q1

The answer and explanation for objective 3.3 review question 1 are inconsistent with the question asked. It appears that the answers provided are better suited for a question similar to question 2 in the same section but not precisely.

Michael Geist  Feb 18, 2014 
PDF Page 274
Objective review

(Choose all that apply) needs to be added at the end of both qu. 2 and 3

Ibrahem Khalil  Jan 07, 2014 
PDF Page 278
Objective 3.3: Review,Qu. 2

The answers are not related to the question, please, change the answer or the question.

Ibrahem Khalil  Jan 06, 2014 
PDF Page 278
Objective 3.3: Thought experiment

Answers of qu.2 and qu.3 are missing.

Ibrahem Khalil  Jan 06, 2014 
PDF Page 282
Objective 3.6: Review

Answer of qu. 2 is actually the answer of qu. 3.
Qu. 2 answer doesn't exist.

Ibrahem Khalil  Jan 07, 2014 
PDF Page 282
Objective 3.7: Review

Questions are numbered 3, 4 and 5 but it must be 1, 2, and 3.

Ibrahem Khalil  Jan 07, 2014 
PDF Page 283
Qu. 2 which is wrongly numbered Qu. 5

Why service path is needed ?!!!

Ibrahem Khalil  Jan 07, 2014 
PDF Page 283
Objective 3.8: Review. Qu 1

Correct answer A, not B

Ibrahem Khalil  Jan 07, 2014 
PDF Page 284
Objective 3.8: Review. Qu 2

Please, revise the original question

Ibrahem Khalil  Jan 07, 2014 
PDF Page 295
Bullet 4

It should be "Search all Customers by Last Name" instead of "Search all Customers on a specific AccountId by Last Name"

Ibrahem Khalil  Jan 08, 2014 
PDF Page 296
CustomerController.cs

The signature of the 2nd method should be:
public IEnumerable<Customer> SearchCustomers(string lastName)

Ibrahem Khalil  Jan 08, 2014 
PDF Page 303
2nd parahraph

The two links contain an extra "Controller/" word.

Ibrahem Khalil  Jan 08, 2014 
PDF Page 303
ActionNameAttribute- Last parahraph

The two links contain an "data" word instead of "api".

Ibrahem Khalil  Jan 08, 2014 
PDF Page 311
JS Code

The url of the 1st call should be:
$.getJSON('api/Customer/GetCustomer?accountId=4')
- api instead of data
- GetCustomer instead of GetCustomers

Ibrahem Khalil  Jan 08, 2014 
PDF Page 311
JS Code

In order to show results as in figure 4-4, the url of the 1st call should be:
$.getJSON('api/Customer/GetCustomer?lastName=')
- api instead of data
- "lastName=" instead of "accountId=4"

Ibrahem Khalil  Jan 08, 2014 
PDF Page 318
4th code snippet

It should be _contentRepository = contentRepository;
Instead of
_contentRepository = new WebClientContentRepository();

Ibrahem Khalil  Jan 08, 2014 
PDF Page 328
Enabling SSL

There is an already out of the box attribute doing the same logic:
[RequireHttps]

Ibrahem Khalil  Jan 08, 2014 
PDF Page 356
Objective 4.2: Review. Qu. 2

C is not correct, also it is not "Accept-Encoding" in the question, it's "Accept-Request"
Modify the question options or the answer.

Ibrahem Khalil  Jan 08, 2014 
PDF Page 359
Qu. 3

Task.WaitAll "Waits for all of the provided Task objects to complete execution."

Right answer should be B. Even if "Task.WaitAll can be used to run multiple asynchronous requests in parallel"; which is wrong, the question is not asked to run them in parallel.

Ibrahem Khalil  Jan 09, 2014 
PDF Page 363
MORE INFO XCOPY SYNTAX

The link is not complete.

Ibrahem Khalil  Jan 09, 2014 
PDF Page 380
MORE INFO CONFIGURING DIRECT PORTS

This topic has been retired.

Ibrahem Khalil  Jan 09, 2014 
PDF Page 383
Objective review Qu. 2

"ServiceConfiguration.cscfg" in the options should be replaced with "ServiceDefinition.csdef"

Ibrahem Khalil  Jan 09, 2014 
PDF Page 436
Qu. 2

D is also correct because it is required in order to put the assembly in the GAC (B)

If you insist that only B is correct, you should do the same in qu. 3, and make the correct answer is only B.

Ibrahem Khalil  Jan 10, 2014