2012-04-05 21 views
0

Ich bin neu in der Programmierung Windows Phone 7, aber werde wirklich müde, weil ich 3 Tage auf ein Problem verbringen. Ich suche alles Internet und bekomme ein paar gute Erklärungen, aber ohne Glück - es funktioniert nicht bei mir Programm.Verbinden von SQL Azure mit Windows Phone 7 mit WCF

I in SQL Azure eine Tabelle zu erstellen, die i dbo.Messenger mit Struktur genannt:

  • id (PK, nicht null)
  • Kategorie (nvarchar (30), null)
  • Nachricht (nvarchar (max), null)
  • Beschreibung (nvarchar (200), null)

i für sie machen Dann WC F wchich eine Liste bringen sie mir soll:

 [OperationContract] 
     List<NoteDto> GetNotes(); 
public List<NoteDto> GetNotes() 
    { 
     using (var context = new WP7mgrEntities()) 
     { 
      var notes = (from eachNote in context.Messenger 
         orderby eachNote.id ascending 
         select new NoteDto 
      { 
       id = eachNote.id, 
       category= eachNote.category, 
       description= eachNote.description, 
       message= eachNote.message, 
      } 
       ).ToList(); 
      return notes; 
     } 
    } 

cource für jeden Datamember bekam wie diese auf Extraklasse NoteDto:

[DataMember] 
    public int id {get; set; } 

So danach i WP7 machen apps, die listbox erhalten, die auch gefüllt werden sollte afert ich klicke button2

 <ListBox Height="431" HorizontalAlignment="Left" Margin="12,199,0,0" Name="listBox1" VerticalAlignment="Top" Width="438" 
       ItemsSource="{Binding Notes}"> 
     <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding category}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate>   
     </ListBox> 

Und dieser Code hinter dieser:

private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     Service1Client client = new Service1Client(); 
     client.GetNotesCompleted += new EventHandler<GetNotesCompletedEventArgs>(client_GetNotesCompleted); 
     this.Notes = new ObservableCollection<NoteDto>(); 

    } 
    private ObservableCollection<NoteDto> _notes; 
    public ObservableCollection<NoteDto> Notes 
    { 
     get { return _notes; } 
     set { _notes = value; 
     this.RaisePropertyChanged("Notes"); 
     } 
    } 

öffentliche PropertyChangedEventHandler Property Ereignis; private void RaisePropertyChanged (Zeichenfolgeneigenschaftsname) { PropertyChangedEventHandler propertyChanged = this.PropertyChanged; if ((propertyChanged! = Null)) { propertyChanged (dies, neues PropertyChangedEventArgs (propertyName)); } }

void client_GetNotesCompleted(object sender, GetNotesCompletedEventArgs e) 
    {this.Notes = e.Result; } 

Wenn ich die Taste 2 meine Listbox klicken wird füllen nicht von Aufzeichnungen aus der Datenbank.
Irgendeine Idee? PLZ Hilfe?

+0

Sie nicht wirklich wissen, ob Ihr Code, um die Noten zu bekommen ausfällt oder ob der Bildschirm auf die Veränderungen reagieren versagt. Ich würde button2_Click ändern, um dies zu setzen.Hinweise auf einen statischen Wert. – Rich

+0

wie man das einstellt? – HelpMyProgram

+0

Ich sage nur etwas wie in button2_Click: this.Notes = new Liste {new NoteDto {id = 1, category = "Foo"}}; Debugging 101..abklären, welcher Teil fehlschlägt. Dann finde heraus, warum. – Rich

Antwort

0

Welche Art von Bindung verwenden Sie? daran erinnern, dass nur Wshttpbinding für WP7 nicht verfügbar ist. Auf der anderen Seite, warum stellen Sie keine solche Datenbank mit WCF Data Service als OData.

Check it out.

Hoffe, dass es hilfreich,

+0

Ich benutze Standard-Bindung, hat nichts in web.config seit create project (mit asp.net 4.0) geändert.WCF arbeitet property, weil ich versuche, es zu benutzen, um einen Rekord zu bekommen, um Textkasten zu füllen, und es war ok, erhält dieses Problem nur mit Liste. Ich kann oData versuchen, aber wie ich sehe, brauche ich Visual Studio 2010, nicht arbeiten auf Express, die ich bevorzuge :) – HelpMyProgram

+0

Ich denke, dass Standardbindung ist MEX, die weder unterstützt wird. Versuchen Sie, fügen Sie Basichttpbinding WCF WCF-Editor verwendet oder einfach durch Hinzufügen: