1

Kann jemand helfen?Verwendung der Beziehung/Fremdschlüssel mit linq2sql?

Ich habe eine Beziehung zwischen meiner Reservierung (prim key) und Insurance (für Schlüssel) -Tabellen erstellt und in linq2sql importiert und überprüft meine automatisch erstellten C# -Dateien und sicher genug, ich habe reservation.MyFieldNames etc etc PLUS reservation.Versicherung, die ist meine Beziehung aber Reservierung. Versicherung kann ich die Feldnamen der Versicherung nicht sehen - fehle ich etwas?

Muss ich eine GetInsurances oder etwas anrufen? Ich sehe nichts. In der Tat ist Versicherung vom Typ Linq.entityset ???

Auch ich hatte gehofft, dass meine Reservierung Tabelle zu erstellen (das ist schön und einfach war) und dann automatisch „INJECT“ eine Versicherung (dh 1 bis viele) von IList oder etwas ..

Ist dies nicht möglich,

Jede Hilfe wirklich geschätzt

ps Ich habe meine automatisch erstellten C# dto Dateien über T4 Toolbox erstellt, aber das sollte keinen Unterschied machen. Ich habe nur eine separate Datei für jede Entität.

Antwort

4

Nicht 100% sicher, was du meinst "Ich sehe nichts".

Angenommen, Sie haben eine Reservations Tabelle und eine Insurance Tabelle, die auf die "Reservierungen" verweist - welche Art von Beziehung ist das? 1: 1? 1: viele? Welcher Weg? Können Sie einen Screenshot Ihrer DBML-Designer-Oberfläche posten? (lade es auf www.tinypic.com hoch und füge den Link als Bild hier in deine Frage ein)?

Die Klasse "Reservierungen" enthält eine Instanz einer "Versicherung" (EntityRef<Insurance>) oder eine Liste (EntitySet) von "Insurance" -Objekten (EntitySet<Insurance>) - abhängig von der Art der Beziehung - und Sie sollten in der Lage sein navigieren Sie diejenigen im Code, z

string foo = myReservation.Insurance.CustomerName; // or whatever 

Sie werden nicht die auf der Designer-Oberfläche sehen - das ist nur ein Link zu einer anderen Klasse somehwere auf Ihre Entwurfsoberfläche, nicht wahr?

Das Gleiche gilt für die umgekehrt - wenn die Versicherung mit genau einer Reservierung zugeordnet ist, sollten Sie in der Lage sein (in Code) zu tun:

string bar = myInsuranceObject.Reservation.MyFieldName1; // or whatever 

es ist also nicht ganz klar, mir der Fall, dass Sie beziehen Sie sich wirklich auf - können Sie Ihre Frage ein bisschen mehr ausarbeiten und es klarer machen?

Basierend auf der NerdDinner sample, werde ich versuchen, zu erarbeiten. Schauen Sie sich die DBML Design Oberfläche:

alt text http://i30.tinypic.com/2q21z6b.jpg

Hier sieht man nicht alle Eigenschaften verwendet hin und her zwischen den Objekten zu bewegen. Aber Sie sehen, dass die "RSVP" Klasse einen "DinnerID" Fremdschlüssel hat, der sie mit der "Dinner" Klasse verbindet. Das ist also eine 1: n-Beziehung: Ein Dinner hat n RSVPs, und jedes RSVP ist für genau ein Dinner.

in Ihrem Code sehen Sie diese erstellte Eigenschaften jetzt - zuerst die RSVP-Klasse finden Sie unter:

alt text http://i31.tinypic.com/fazaz5.jpg

Sie können sehen, dass die RSVP Klasse hat einen EntityRef<Dinner> - ein Verweis (Link) auf genau eine Dinner - das Abendessen, für das diese RSVP ist.

Auf der anderen Seite, die Dinner Klasse hat eine ganze Liste von RSVPs aller Geek planen dieses Abendessen zu besuchen!

alt text http://i29.tinypic.com/66yn9e.jpg

So in der Dinner Klasse, haben Sie eine EntitySet<RSVP> - eine ganze Liste von Teilnehmern, die Sie dann navigieren können, wenn Sie mit Ihrem Dinner Klasse arbeiten sind.

Macht das die Dinge ein bisschen klarer?

Marc

+0

danke du hast meine Augen geöffnet, ich glaube ich habe es jetzt !! Vielen Dank –