Laden...

Linq (joins)

Erstellt von stefan123 vor 13 Jahren Letzter Beitrag vor 13 Jahren 688 Views
S
stefan123 Themenstarter:in
107 Beiträge seit 2009
vor 13 Jahren
Linq (joins)

Hallo Leute

Ich arbeite mit dem MVVP Pattern und dem ADO.NET 4.0 (Entity Framework).

Nun erstelle ich in der Model- Klasse eine Linq abfrage die zwei Tabellen Joint, das funzt auch alles wunderbar.



   var query = from p in ppentities.tbl_person
                                join t in ppentities.tbl_tier on p.id_person equals t.idfs_person                            
                                select new {name= p.Vorname,bezeichnung= t.name };

//Hier müsste jetzt  eine neue Klasse hin. 
  DataServiceQuery<tbl_person> proxy = (DataServiceQuery<tbl_person>)query;
            proxy.BeginExecute(PersonCallback, proxy);


Doch Wie übergebe ich die Daten der ModelView-Klasse ohne jetzt eine neue Klasse erstellen zu müssen. Da ich es nur an ein Datagrid binden möchte das spielt ja im Prinzip bei WPF keine Rolle.

Zusaätzlich Frage?

Was wäre wenn ich das gebundene Datagrid zusätzlich noch editierbar setze also im Modus=twoway.
Wie Update ich das ganze weil es im Prinzip ja 2 tabllen sind, oder übernimmt das Framework?

Danke Im Voraus.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

abfrage die zwei Tabellen Joint

Wenn die Tabellen in einer Beziehung sind (Fremdschlüsselbeziehung) dann ist kein Join in der Linq-Query notwendig denn die Beziehung wird automatisch erstellt. Schau dir die Eigenschaften deiner Model-Klassen an dann wirst du sehen dass diese Beziehung existiert.

Doch Wie übergebe ich die Daten der ModelView-Klasse ohne jetzt eine neue Klasse erstellen zu müssen.

Eine anonyme Klasse - die das Ergebnis deiner Query ist - kann nicht an eine andere Methode übergeben werden. Hier hilft es nichts als eine eigene Klasse zur Aufnahme des Ergebnisses zu erstellen. Wenn du aber obigen Punkt berücksichtigst kannst du die Klasse der Master-Tabelle der Beziehung übergeben.

Wie Update ich das ganze weil es im Prinzip ja 2 tabllen sind, oder übernimmt das Framework?

Wenn die Eigenschaften der Model-Objekte (Model ist hier von ADO.net EF) geändert werden so verfolgt ADO.net EF die Änderung und bei einem Save werden die Änderungen übertragen (als Hintergrund: Der Context entspricht dem Unit Of Work-Pattern).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
902 Beiträge seit 2007
vor 13 Jahren

Doch Wie übergebe ich die Daten der ModelView-Klasse ohne jetzt eine neue Klasse erstellen zu müssen.
Danke Im Voraus.

wenn du .net 4 verwendest, kannst du anonyme typen per dynamic an methoden übergeben.

mfg
serial

S
stefan123 Themenstarter:in
107 Beiträge seit 2009
vor 13 Jahren

Wie meinst du das ?

Wenn du aber obigen Punkt berücksichtigst kannst du die Klasse der Master-Tabelle der Beziehung übergeben.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

damit meine ich dass du direkt tbl_person übergeben kannst. Alle Beziehungen zu tbl_tier sind darin enthalten. Andernfalls erstell eine Klasse


public class PersonTierModel
{
    public string Vorname     { get; set; }
    public string Bezeichnung { get; set; }
}

und verwende diese in der Query und übergib diese Instanz.

BTW: Schau dir mal die Nameskonventionen an.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
stefan123 Themenstarter:in
107 Beiträge seit 2009
vor 13 Jahren

Danke hat mir sehr geholfen.