ID do artigo: 972392 - Última revisão: quarta-feira, 10 de junho de 2009 - Revisão: 1.5

MCTS Paced Training Kit (Exam 70-561): Microsoft ® .NET Framework 3.5 ? correções e comentários de desenvolvimento de aplicativos ADO.NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo contém informações sobre erros conhecidos relacionados ao catálogo Microsoft Press, correções e comentários MCTS Paced Training Kit (Exam 70-561): Microsoft.NET Framework 3.5 ADO.NET Application Development, 978-0-7356-2563-1.

Os seguintes tópicos são abordados:

  • CD-ROM: Test prática pergunta pontuados incorretamente
  • CD-ROM: Test prática pergunta pontuados incorretamente
  • CD-ROM: Impossível responder a pergunta de teste de prática
  • Página xix: "próximo, anterior e ir para"devem ser"próximo e anterior"
  • 17 De página: "File, New, novo arquivo" deve ser "Project, Add New Item"
  • Página 44: Consultas SQL estão incorretas
  • Página 51: "Initial Catalog" deve ser "InitialCatalog"
  • Página 54: O servidor deve ser System
  • Página 96: SqlCommand deve ser SqlParameterCollection
  • Página 103: "LEFT INNER JOIN" deve ser "INNER JOIN"
  • Página 113: "Prossessing Asynchronous = true" faltando do exemplo de código
  • Página 138: PROPERTY deve ser METHOD
  • Página 143: PROPERTY deve ser METHOD
  • Página 143: DataSet deve ser DataTable
  • Página 146: GetProducts deve ser GetProductRows
  • Página 147: Descrição incorreta código de exemplo
  • Página 148: Incorretas tabelas e colunas referenciadas na explicação de amostra de código
  • Página 175: SupplierLocation deve ser SupplierAddress
  • Página 206: BatchUpdateSize deve ser UpdateBatchSize
  • Página 214: Coluna incorreta nomes usados
  • Página 219: 3 de 4 deve ser 4-4
  • Página 223: Produtos devem ser o produto
  • Página 224: Instrução incorreta na etapa 5
  • Página 224: ? FillBySupplierID e GetDataBySupplierID. ? devem ser ? FillBySupplierID ?.
  • Página 230: scope.Commit() ausente do código de exemplo
  • Páginas 292-294: várias entradas devem ser removidas da tabela 6-1
  • Página 299: Descrição incorreta da etapa 3
  • Página 321: Systen.Environment deve ser System.Diagnostics
  • Página 330: "XmlReadMode.Ignore esquema" deve ser "XmlReadMode.ReadSchema"
  • Página 364: VideoGameStoreDB deve ser VideoGameStoreDBContext
  • Página 375: Linha ausente do código de exemplo
  • Página 380: Instrução SELECT duplicada
  • Página 386: Etapa 7 deve ser removida
  • Página 409: OfProduct deve ser de produto
  • Página 410: Erro no exemplo de código
  • Página 437: OPERADOR deve ser FUNCTION
  • Página 455: Código deve ser arquivos de prática
  • Página 459: 1943 deve ser 1942
  • Página 466: Visual Studio 7 deve ser o Visual Studio 97
  • Página 476: Modelo EntityClass deve ser o modelo de dados de entidade
  • Página 479: Definição de DataAdapter é incorreta

Mais Informações

CD-ROM: Test prática pergunta pontuados incorretamente

No exame de prática incluído no CD do assistente, uma das perguntas é pontuada incorretamente.

Lê a pergunta:
"Usar duas instâncias de DataContext para recuperar objetos do banco de dados duas tabelas. Depois de modificar objetos retornados, você chamar o método SubmitChanges em cada instância de DataContext. Você quer alterações em ambos os bancos de dados ocorrem no contexto de uma única transação distribuída."

Lê a resposta deve ser marcada correta:
"Incorporar chamadas ao método SubmitChanges dentro um TransactionScope com TransactionScopeOption definir RequiredNew. Chamada concluída após a atualização".

CD-ROM: Test prática pergunta pontuados incorretamente

No exame de prática incluído no CD do assistente, uma das perguntas é pontuada incorretamente.

Lê a pergunta:
"Você cria DbCommand para executar uma consulta. Você deve recuperar uma DBDataReader que você pode usar para acessar o conjunto de resultados. O que você deve fazer?"

Lê a resposta deve ser marcada correta:
"Use o método DbCommand.ExecuteDbDataReader para executar o comando texto contra a conexão e retornar um DbDataReader."

CD-ROM: Impossível responder a pergunta de teste de prática

Exame prática, uma das perguntas inclui instruções para selecionar opções de uma lista, mas a lista não existe.

Começa a pergunta:
"Você estiver criando um cliente inteligente conectado ocasionalmente."

Essa pergunta não pode ser respondida ou pontuada como está.

Página xix: "próximo, anterior e ir para"devem ser"próximo e anterior"

Na página xix, a última frase está incorreta.

Alteração:
"Para tirar o teste, responda às perguntas e use os botões Next, Previous e ir para mover a pergunta a pergunta".

Para:
"Para tirar o teste, responda às perguntas e use os botões Próximo e anterior para mover a pergunta a pergunta".

17 De página: "File, New, novo arquivo" deve ser "Project, Add New Item"

Na página 17, a última frase está incorreta.

Alteração:
"Você pode também selecionar arquivo, novo, novo arquivo na barra de menu e escolha o tipo de le confi g fi na janela mostrada na Figura 1-3."

Para:
"Você pode também selecionar Project, adicionar novo item da barra de menu e escolha o tipo de le confi g fi na janela mostrada na Figura 1-3."

Página 44: Consultas SQL estão incorretas

Na página 44, as consultas SQL usadas no código de exemplo estão incorretas.

Alteração:
theTransaction = theConnection.BeginTransaction("myFirstTransaction")

Dim theCommand As SqlCommand = New SqlCommand()
theCommand.CommandText = "SELECT top 10 * FROM game"
theCommand.CommandType = CommandType.Text
theCommand.Transaction = theTransaction
theCommand.Connection = theConnection
theCommand.ExecuteNonQuery()

Console.WriteLine("First command executed successfully.")

Dim theSecondCommand As SqlCommand = New SqlCommand()
theSecondCommand.CommandText = "SELECT top 10 * FROM accessory"

Para:
theTransaction = theConnection.BeginTransaction("myFirstTransaction")

Dim theCommand As SqlCommand = New SqlCommand()
theCommand.CommandText = "UPDATE product SET listprice = 59.99
	WHERE productid = 2020"
theCommand.CommandType = CommandType.Text
theCommand.Transaction = theTransaction
theCommand.Connection = theConnection
theCommand.ExecuteNonQuery()

Console.WriteLine("First command executed successfully.")

Dim theSecondCommand As SqlCommand = New SqlCommand()
theSecondCommand.CommandText = 
	"INSERT INTO product (ProductName, ProductDescription, ListPrice,
		ProductTypeID, ReleaseDate, ListPriceCurrency) " +
	"VALUES ('Super Fight 2', 'The sequel to the #1 XBox 360 game
		that never was', 59.99, 1, '2008-11-01', 'USD')"

Página 51: "Initial Catalog" deve ser "InitialCatalog"

Na página 51, as seqüências de conexão usadas na resposta B estão incorretas.

Alteração:
Dim theConnectionString As String = "Data Source=jim-pc;Initial Catalog=VideoGameStoreDB;Integrated Security=SSPI;"

Para:
Dim theConnectionString As String = "Data Source=jim-pc;InitialCatalog=VideoGameStoreDB;Integrated Security=SSPI;""

Change:
"string theConnectionString = "Data Source=jim-pc;Initial
	Catalog=VideoGameStoreDB;Integrated Security=SSPI;";

To:
"string theConnectionString = "Data Source=jim-pc;InitialCatalog=VideoGameStoreDB;Integrated Security=SSPI;";


Página 54: O servidor deve ser System

Na página 54, a segunda sentença do primeiro parágrafo está incorreta.

Alteração:
"Esta é uma movimentação inteligente ? Microsoft fornece um número de provedores de dados diferentes, incluindo provedor nativo para o SQL Server, mas terceiros pode fornecer seus próprios (por exemplo, ao usar o Oracle Relational Database Management Server (RDBMS)) ou um provedor de dados personalizados pode ser gravado por qualquer desenvolvedor competente."

Para:
"Esta é uma movimentação inteligente ? Microsoft fornece um número de provedores de dados diferentes, incluindo provedor nativo para o SQL Server, mas terceiros pode fornecer seus próprios (por exemplo, ao usar o Oracle Relational Database Management System (RDBMS)) ou um provedor de dados personalizados pode ser gravado por qualquer desenvolvedor competente."

Página 96: SqlCommand deve ser SqlParameterCollection

Na página 96, sentença antes da lista com marcadores está incorreta.

Alteração:
"Além disso, o objeto SqlCommand tem um método Add sobrecarregado, que pode ser usado para adicionar parâmetros com e sem uma referência direta para um SqlParameter, como mostrado na seguinte lista:"

Para:
"Além disso, o objeto SqlParameterCollection tem um método Add sobrecarregado, que pode ser usado para adicionar parâmetros com e sem uma referência direta para um SqlParameter, como mostrado na seguinte lista:"

Página 103: "LEFT INNER JOIN" deve ser "INNER JOIN"

Na página 103, a segunda linha de resposta A pergunta 2 está incorreta.

Alteração:
FROM product p LEFT INNER JOIN productType pt on pt.ProductTypeID =

Para:
FROM product p INNER JOIN productType pt on pt.ProductTypeID =

Página 113: "Prossessing Asynchronous = true" faltando do exemplo de código

Na página 113, a linha do exemplo de código translation from VPE for Csharp 5ª falta um parâmetro.

Alteração:
Security=SSPI;";

Para:
Security=SSPI;Asynchronous Prossessing=true;";

Página 138: PROPERTY deve ser METHOD

Na página 138, o título da primeira coluna na tabela 3-2 está incorreto.

Alteração:
"PROPRIEDADE"

Para: "METHOD"

Página 143: PROPERTY deve ser METHOD

Na página 143, o título da primeira coluna na tabela 3-4 é incorreto.

Alteração:
"PROPRIEDADE"

Para:
"MÉTODO"

Página 143: DataSet deve ser DataTable

Na página 143, a descrição de RejectChanges tabela 3-4 está incorreto.

Alteração:
"Reverte todas as alterações aos dados no DataSet, semelhante à reversão no nível do banco de dados exceto isso é feito para dados na memória."

Para:
"Reverte todas as alterações aos dados na DataTable, semelhante à reversão no nível do banco de dados exceto isso é feito para dados na memória."

Página 146: GetProducts deve ser GetProductRows

Na página 146, a última sentença do segundo parágrafo está incorreta.

Alteração:
"O SupplierRow oferece um método chamado GetProducts, retorna uma matriz de objetos ProductRow".

Para:
"O SupplierRow oferece um método chamado GetProductRows, retorna uma matriz de objetos ProductRow".

Página 147: Descrição incorreta código de exemplo

Na página 147, parágrafo após o código de exemplo está incorreto.

Alteração:
"No código anterior, o método BuildDataSetWithRelation cria duas tabelas, adiciona ao DataSet e prossegue para criar uma DataRelation entre duas tabelas, da ContactType fi eld em contato com a chave primária na tabela ContactTypes. Habilitando restrições ao criar o relacionamento, a restrição de chave externa é implementada automaticamente. Adicionando dados mantém uma referência a uma entrada não existente na tabela ContactTypes causará uma exceção ser lançada. Adicionar entrada ContactTypes antes de adicionar o contato funciona bem."

Para:
"No código anterior, o método BuildDataSetWithRelation cria duas tabelas, adiciona ao DataSet e prossegue para criar uma DataRelation entre duas tabelas, do campo CódigoDoFornecedor no produto para a chave primária na tabela fornecedor. Habilitando restrições ao criar o relacionamento, a restrição de chave externa é implementada automaticamente. Adicionando dados mantém uma referência a uma entrada não existente na tabela fornecedor causará uma exceção ser lançada. Adicionando a entrada de fornecedor antes de adicionar o produto funciona bem."

Página 148: Incorretas tabelas e colunas referenciadas na explicação de amostra de código

Na página 148, o primeiro parágrafo e exemplo de código a seguir estão incorretos.

Alteração:
Por exemplo, o código a seguir define a expressão para a coluna OrderLinesCount da tabela Orders:
' VB
Tables("Suppliers").Columns("ProductCount").Expression = "Count(Child(Product))"

// C#
Tables["Suppliers "].Columns["Product Count"].Expression = "Count(Child(Product))";

Para: por exemplo, o código a seguir define a expressão para a coluna ProductCount da tabela Fornecedores:
' VB
Tables("Suppliers").Columns("ProductCount").Expression = "Count(Child(Product))"

// C#
Tables["Suppliers"].Columns["ProductCount"].Expression = "Count(Child(Product))";

Página 175: SupplierLocation deve ser SupplierAddress

Na página 175, a etapa 6 se refere a um campo incorreto.

Alteração:
6. "No assistente, ao inserir a instrução SQL, selecionar elds fi todas, exceto o campo SupplierLocation".

Para:
6. "No assistente, ao inserir a instrução SQL, selecionar elds fi todas, exceto o campo SupplierAddress".

Página 206: BatchUpdateSize deve ser UpdateBatchSize

Na página 206, a primeira sentença da etapa 2 está incorreta.

Alteração:
"CustomerTableAdapter não expõe a propriedade BatchUpdateSize porque esta é uma propriedade c specifi SqlDataAdapter."

Para:
"CustomerTableAdapter não expõe a propriedade UpdateBatchSize porque esta é uma propriedade c specifi SqlDataAdapter."

Página 214: Coluna incorreta nomes usados

Na página 214, o terceiro parágrafo está incorreto.

Alteração:
"O código mostrado na Listagem 4 2 mostra como criar uma relação entre duas tabelas. A restrição de chave externa está habilitada, portanto, somente os valores existentes eld de fi ContactType são permitidos. Ele mostra que o método BuildDataSetWithRelation cria duas tabelas, adiciona ao DataSet e prossegue para criar uma DataRelation entre duas tabelas. O relacionamento conecta eld de fi ContactType em contato com a chave primária na tabela ContactTypes. Habilitando restrições ao criar o relacionamento, a restrição de chave externa é implementada automaticamente e adicionando dados que mantém uma referência a um ContactTypes inexistente entrada causa uma exceção ser acionada. A implementação correta seria adicionar a entrada ContactTypes antes de adicionar a entrada de contato."

Para:
"O código mostrado na Listagem 4 2 mostra como criar uma relação entre duas tabelas. A restrição de chave externa está habilitada, portanto, são permitidos somente valores existentes para o campo CódigoDoFornecedor. Ele mostra que o método BuildDataSetWithRelation cria duas tabelas, adiciona ao DataSet e prossegue para criar uma DataRelation entre duas tabelas. O relacionamento conecta o campo CódigoDoFornecedor no produto para a chave primária na tabela fornecedor. Habilitando restrições ao criar o relacionamento, a restrição de chave externa é implementada automaticamente e adicionando dados mantém uma referência a uma entrada de fornecedor inexistente causa uma exceção ser acionada. A implementação correta seria adicionar a entrada de fornecedor antes de adicionar a entrada de produto."

Página 219: 3 de 4 deve ser 4-4

Na página 219, a última sentença antes tabela 4-4 está incorreta.

Alteração:
"Consulte a tabela 4-3 para obter uma lista de opções de escopo de transação".

Para:
"Consulte a tabela 4-4 para obter uma lista de opções de escopo de transação".

Página 223: Produtos devem ser o produto

Na página 223, a etapa 4 está incorreta.

Alteração:
"Arraste a tabela Produtos para a superfície de design."

Para:
"Arraste a tabela Produtos para a superfície de design."

Página 224: Instrução incorreta na etapa 5

Na página 224, a segunda sentença da etapa 5 está incorreta.

Alteração:
"No assistente, ao inserir a instrução SQL, selecione todos os campos exceto o campo SupplierLocation".

Para:
"No assistente, ao inserir a instrução SQL, selecione todos os campos".

Página 224: ? FillBySupplierID e GetDataBySupplierID. ? devem ser ? FillBySupplierID ?.

Na página 224, etapas 8.b. e 9.b. estão incorretas.

Alteração:
"Nome da consulta"FillBySupplierID e GetDataBySupplierID""

Para:
"Consulta"FillBySupplierID"nome"

Página 230: scope.Commit() ausente do código de exemplo

Na página 230, uma linha adicional é necessária no exemplo de código.

Alteração:
Using scope As New TransactionScope()
	SaveCustomer(ds)
	SavePurchase(ds)
End Using

Para:
Using scope As New TransactionScope()
	SaveCustomer(ds)
	SavePurchase(ds)
	scope.Commit()
End Using

Páginas 292-294: várias entradas devem ser removidas da tabela 6-1

Em páginas 292-294, as linhas a seguir devem ser removidas da tabela 6-1:
Ingressar
SelectMany
ThenBy
ThenByDescending
ToDictionary
ToLookup

Página 299: Descrição incorreta da etapa 3

Na página 299, lítio descript da etapa 3 está incorreto.

Alteração:
"Dentro do método Main, criar uma instância da classe GameList chamada jogos. Também, adicionar uma referência ao namespace GameList à parte superior do arquivo, como mostrado aqui: "

Para:
"Criar uma consulta para recuperar os jogos:"

Página 321: Systen.Environment deve ser System.Diagnostics

Na página 321, a segunda sentença do Exercício 1 está incorreta.

Alteração:
"Use LINQ para consultar a lista de processo é retornada pela classe de processo do System.Environment".

Para:
"Use LINQ para consultar a lista de processo é retornada pela classe de processo do System.Diagnostics."

Página 330: "XmlReadMode.Ignore esquema" deve ser "XmlReadMode.ReadSchema"

Na página 330, a última frase está incorreta.

Alteração:
"Como alternativa, você pode usar esquema XML para definir o layout e usar apenas XmlReadMode.Ignore esquema como você verá na próxima seção".

Para:
"Como alternativa, você pode usar esquema XML para definir o layout e usar apenas XmlReadMode.ReadSchema como você verá na próxima seção".

Página 364: VideoGameStoreDB deve ser VideoGameStoreDBContext

Na página 364, a segunda sentença da seção "DataContext" está incorreta.

Alteração:
"VideoGameStoreDB é uma classe que herda de System.Data.Linq.DataContext".

Para:
"VideoGameStoreDBContext é uma classe que herda de System.Data.Linq.DataContext".

Página 375: Linha ausente do código de exemplo

Na página 375, código VB está faltando uma linha.

Alteração:
		Select c
	Return query.ToList()
End Function

Para:
		Select c
	Trace.WriteLine(query.ToString())
	Return query.ToList()
End Function

Página 380: Instrução SELECT duplicada

Na página 380, o código de exemplo na seção declaração UPDATE é incorreto.

Alteração:
exec sp_executesql N'UPDATE [dbo].[Product]
SET [ListPrice] = @p2
WHERE ([ProductID] = @p0) AND ([ProductVersion] = @p1)

SELECT [t1].[ProductVersion]
FROM [dbo].[Product] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ProductID] = @p3)',
N'@p0 int,@p1 timestamp,@p2 float,
@p3 int',@p0=4,@p1=0x0000000000001696,@p2=39.930000000000007,@p3=4

SELECT [t1].[ProductVersion]'
FROM [dbo].[Product] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ProductID] = @p3)',
N'@p0 int,@p1 timestamp,@p2 float,
@p3 int',@p0=4,@p1=0x0000000000001696,@p2=39.930000000000007,@p3=4

Para:
exec sp_executesql N'UPDATE [dbo].[Product]
SET [ListPrice] = @p2
WHERE ([ProductID] = @p0) AND ([ProductVersion] = @p1)

SELECT [t1].[ProductVersion]'
FROM [dbo].[Product] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ProductID] = @p3)',
N'@p0 int,@p1 timestamp,@p2 float,
@p3 int',@p0=4,@p1=0x0000000000001696,@p2=39.930000000000007,@p3=4

Página 386: Etapa 7 deve ser removida

Na página 386, etapa 7 está incorreta e deve ser desconsiderada.

Página 409: OfProduct deve ser de produto

Na página 409, 14 linha do exemplo de código está incorreta.

Alteração:
ObjectQuery(OfProduct) = theContext.Product

Para:
ObjectQuery(Of Product) = theContext.Product


Página 410: Erro no exemplo de código

Na página 410, a linha do exemplo de código 10 está incorreta.

Alteração:
ObjectQuery productQueryUsingNavigationProperty<Product> =

Para:
ObjectQuery<Product> productQueryUsingNavigationProperty =


Página 437: OPERADOR deve ser FUNCTION

Na página 437, o título da coluna esquerda na tabela 10-7 está incorreto.

Alteração:
"OPERADOR"

Para:
"FUNÇÃO"

Página 455: Código deve ser arquivos de prática

Na página 455, a segunda sentença da seção de laboratório está incorreta.

Alteração:
"Todos os arquivos de laboratório podem ser instalados da pasta de código no CD complementar."

Para:
"Todos os arquivos de laboratório podem ser instalados da pasta arquivos de prática no CD complementar."

Página 459: 1943 deve ser 1942

Na página 459, há três referências a ? 1943: junta tachado ? que devem ler "1942:Joint tachado."

Na etapa 6, altere:
"Na parte de se outra instrução, alterar o jogo do ProductName para ? 1943: junta tachado ? (Observe que o ano está mudando)."

Para:
"Na parte de se outra instrução, alterar o jogo do ProductName para ? 1942: junta tachado ? (Observe que o ano está mudando)."

Na linha do exemplo de código VB 6ª, alterar:
game.ProductName = "1943: Joint Strike"

Para:
game.ProductName = "1942: Joint Strike"

Na linha de 09 de amostra de código translation from VPE for Csharp, alterar:
game.ProductName = "1943: Joint Strike";

Para:
game.ProductName = "1942: Joint Strike";

Página 466: Visual Studio 7 deve ser o Visual Studio 97

Na página 466, a explicação para a resposta D da pergunta 1 da lição 2 é imprecisa.

Alteração:
"Correto: DataSets tipados foram introduzidos no Visual Studio 7."

Para:
"Correto: DataSets tipados foram introduzidos no Visual Studio 97."

Página 476: Modelo EntityClass deve ser o modelo de dados de entidade

Na página 476, a explicação de resposta D para a pergunta 2 está incorreta.

Alteração: "incorreto: essa resposta se refere ao arquivo de código fonte modelo EntityClass."

Para:
"Incorreto: essa resposta se refere ao arquivo de código fonte Entity Data Model."

Página 479: Definição de DataAdapter é incorreta

Na página 479, definição de DataAdapter é incorreta.

Alteração:
"DataReader é usado para consumir dados de maneira somente leitura, somente encaminhamento, seqüencial e unbuffered."

Para:
"Representa um conjunto de comandos SQL e uma conexão de banco de dados que são usados para preencher o DataSet."

Microsoft Press tem o compromisso fornecendo livros informativos e precisos. Todos os comentários e as correções listadas acima estão prontas para inclusão em impressões em futuras deste livro. Se você tiver uma impressão posterior deste livro, ele pode já conter maioria ou todos correções acima.

A informação contida neste artigo aplica-se a:
  • MCTS Self-Paced Training Kit (Exam 70-561): Microsoft .NET Framework 3.5?ADO.NET Application Development, ISBN 978-0-7356-2563-1
Palavras-chave: 
kbmt KB972392 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 972392  (http://support.microsoft.com/kb/972392/en-us/ )