Announcement

Collapse
No announcement yet.

Entity Framework - Binden mit Details an BindingSource..

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Entity Framework - Binden mit Details an BindingSource..

    Hallo,
    seit ein paar Tagen versuche ich mich im EntityFramework einzuarbeiten.
    Ich stehe jetzt aber vor einem Problem, wie der Ochse vorm Berg...

    Ich umschreibe kurz den Sachverhalt:
    Ich habe eine Datenbank (SQL-Server 05, bzw 08), möglicherweise aber noch nicht ganz optimal am laufen (Fremdschlüssel, Abhängigkeiten...wird aber noch angeschnitten!)..
    ich habe auch dazu ein Programm geschrieben, mit normalen SQL-Abfragen (DataReader, BindingSource ect...), und will jetzt auf das EF "umsteigen".

    ch habe mir das DataModel anhand der DB erstellt. Inkl. der Fremdschlüssel...

    Jetzt aber zu meinem Anliegen!
    Ich habe 3 Tabellen

    Projekt: ProjektNr (PK), ProjectName,CompanyNR,PartnerNR
    = Ein Projekt wird durch eine ID identifiziert, bekommt einen Namen, und ihr wird über die CompanyNr und der PartnerNR eine Firma und ein Partner zugeteilt
    Partner: PartnerNr, PartnerName,Tel...ect...
    Company: CompanyNr, CompanyName, usw..

    Ist eigentlich doch eine typische Master-Detail Situation würde ich sagen, oder?
    Naja, im ModelDesigner hat die Project-Entität durch die Fremdschlüsse die Navigationseigenschaften Company und Partner bekommen (siehe Bild)

    Wenn ich jetzt einer BindingSource als DataSource über den Context die Entität Project zuteile, kommt nicht das raus was ich gern möchte...

    Ich wollte eine Übersicht der Projekte, mit Firmen und Partnernamen haben...
    aber irgendwo hab ich da einen Fehler!

    Ich kann den jetzt gerade auch nicht nachbilden, da ich jetzt ein Metadatenfehler vorliegt (wurde aber hier behandelt, habe ja die suche gequält! ;-) )...
    Ich habe das vorher jedenfalls über so probiert:
    Code:
    C#-Code:
    object projAll = ctxDongle.Project.Include("Company");
    
    
    bsDongle = new BindingSource();
    projAll.MergeOption = MergeOption.OverwriteChanges;
    Trace.WriteLine(projAll.ToTraceString);
    
    bsDongle.DataSource = projAll;
    grdDongle.DataSource = bsDongle;
    txtEdit1.DataBindings.Add("text", bsDongle, "ProjectNr");
    txtEdit2.DataBindings.Add("text", bsDongle, "ProjectName");
    Ergebnis war dann, dass ich noch die Navigationseigenschaften als Spalten hatte...

    Ich hoffe das das jetzt nicht doch schonmal hier beschrieben wurde
    über google hab ich auch nix gefunden...
    EIGENTLICH ist das doch nicht soo schwer, oder?
    Oder liegt das Problem am DB-Design?

    Danke schonmal für Hilfe!


    EDIT:
    Ich bin jetzt soweit, dass mir im datagridview projektnr und projektname angezeigt werden. Ich habe bei ProjAll noch ein Include der Partner gemacht, und habe mal eine Schleife durch die Entität ( for each proj in ProjAll) laufen lassen.
    Da kann ich dann projektnamen,nr, die dazugehörige firma und den partner mit allein attributen anzeigen lassen....
    wie schaffe ich es nun, die beiden spalten, firmenname und partnername mit ins datagridview zu bekommen?
    Attached Files

  • #2
    Der Thread ist zwar schon etwas älter, ich habe aber das gleiche Problem.

    In einer Schleife kann ich mir alle Eigenschaften der Entität anzeigen, das binden an das Datagridview ist aber nicht mit Erfolg gekrönt.

    Dort sehe ich nur die Skalareigenschaften, die Navigationseigenschaften sind leer

    Danke für Eure Hilfe

    Roland

    Comment


    • #3
      Hallo,

      ich habe die Lösung nun selbst gefunden:

      Ich habe einfach in der partiellen Klasse der Navigationseigenschaft die ToString-Methode überschrieben und über diese meinen "Fremdschlüssel" zurückgegeben.

      Grüße

      Roland

      Comment

      Working...
      X