2009-07-02 12 views
0

Angenommen, ich habe zwei Klassen und eine Anforderung, dass die Eigenschaft des Primärschlüssels "Id" heißen muss (Beispiel: Book und Publisher). Die Anforderung ist, weil ich mit Code-generierten Objekten unserer Firmen arbeite und die Art, wie sie generiert werden, nicht ändern kann. Diese Klassen haben einen Fremdschlüssel zwischen ihnen: Book to Publisher und ist eine Eins-zu-eins-Beziehung, wobei in diesem Fall jedes Buch nur einen Publisher hat.Wie kann ich Assoziationen mit Objekten haben, die den gleichen Schlüssel ("Id") mit .Net Ria Services haben?

Um Book.Publisher als Eigenschaft in .Net RIA Services zu verwenden, müssen Sie die Attribute hinzufügen. Zum Beispiel in den Metadaten für die Buchklasse:
[Key] public int Id; ... [Enthalten]
[Verband ("Book_Publisher", "Id", "Id", IsForeignKey = true)]
public Publisher Publisher;

In den Metadaten für den Verlag Klasse:
[Key]
public int Id;
...

in dem Client-Code, den ich versuche, den Verlag zu bekommen: Verlag booksPublisher = Book.Publisher; Aber ich bekomme den falschen Publisher (oder eine Null). Nach dem Betrachten der Datenbank ist die Publisher-ID, nach der gesucht wird, die ID des Buchs, nicht der Herausgeber.

Kann ich einen Alias ​​in den Metadaten hinzufügen? Werden spätere Versionen von RIA Services damit umgehen?

Vielen Dank.

Antwort

0

Nur eine Vermutung ... aber ich denke, der Grund, warum Sie Probleme haben, ist, weil Sie versuchen, das Id-Feld aus dem Book-Objekt in das Id-Feld des Publisher-Objekts einzugeben. Ich schätze dieses Buch. Ich identifiziere das Buch eindeutig, nicht den Verlag.

Hat das Book-Objekt ein Feld namens publisherId oder etwas ähnliches? Wenn dies der Fall ist, sollten Sie das Buch mithilfe von Book.publisherId = Publisher.Id an Publisher weiterleiten.

+0

Ich musste die verschiedenen Schlüssel hinzufügen, damit es funktioniert. [Association ("Book_Publisher", "BookId", "PublisherId", IsForeignKey = true)] Publisher Publisher; – Aligned

Verwandte Themen