2010-11-12 26 views
2

Ceci est mon premier post sur Stack Overflow alors s'il vous plaît exuser (et n'hésitez pas à signaler) toutes les erreurs n00b.Comment puis-je exposer des champs privés à l'aide d'une classe partielle dans VB.NET?

Je suis en train de mettre en œuvre des transactions sur plusieurs TableAdapters en VB.NET (en utilisant Visual Studio 2010) en étendant la classe partielle comme décrit dans les exemples suivants:

http://blah.winsmarts.com/2006/06/18/the-definitive-tableadapters--transactions-blog-post.aspx

madprops.org/blog/ tapées-ensembles de données et SQLTransaction/

stackoverflow.com/questions/2342289/net-tableadapter-to-dataadapter

Cependant, lorsque je tente d'exposer l'un des champs privés crea ted par le concepteur, ils sont soulignés dans l'éditeur avec l'erreur suivante:

'_adapter' is not declared. It may be inaccessible due to its protection level.

Recherche sur ce site ainsi que Google n'a pas révélé quoi que ce soit utile, mais perhpas je cherche les mots-clés faux.

Voici le code dans MyDataset.vb

Partial Public Class MyTableAdapter 
    Public Property MyTransaction() As SqlTransaction 
     Get 
      Return _adapter.SelectCommand.Transaction 
     End Get 
     Set(ByVal value As SqlTransaction) 
      If _adapter Is Nothing Then 
       InitAdapter() 
      End If 
      Connection = value.Connection 
      _adapter.InsertCommand.Transaction = value 
      _adapter.UpdateCommand.Transaction = value 
      _adapter.DeleteCommand.Transaction = value 
     End Set 
    End Property 

End Class 

et est le code designer ici:

Partial Public Class MyTableAdapter 
    Inherits Global.System.ComponentModel.Component 

    Private WithEvents _adapter As Global.System.Data.SqlClient.SqlDataAdapter 
    Private _connection As Global.System.Data.SqlClient.SqlConnection 
    Private _transaction As Global.System.Data.SqlClient.SqlTransaction 
    Private _commandCollection() As Global.System.Data.SqlClient.SqlCommand 

Suis-je manque quelque chose, ou est-ce pas possible en VB (tous les exemples J'ai vu sont en C#)?

TIA pour toute aide!

JE

+0

Les noms d'espace de noms correspondent-ils? –

+0

Non, ils ne l'ont pas fait, et c'était en fait le problème. Le concepteur a inséré l'espace de noms entièrement qualifié, mais il ne doit s'agir que de MyDatasetTableAdapters. –

Répondre

0

Pouvez-vous accéder aux propriétés publiques/méthodes de la classe d'adaptateur?

Je pense que vous avez peut-être créé votre classe partielle dans le mauvais espace de noms. Il doit être dans Namespace MyDataSetTableAdapters

+0

Merci Henk! Le concepteur a inséré l'espace de noms entièrement qualifié, mais en le modifiant uniquement pour MyDatasetTableAdapters, le problème a été résolu. –

+0

Comment puis-je accepter votre réponse? Je ne peux pas voter b/c Je suis un n00b :-) –

+0

... hmm, je suppose que c'est ce que la coche géante est pour! Merci encore, je regardais cela pendant plus d'une heure. –