2017-01-19 5 views
0

Ich habe folgendes Modell:Entity Framework: Karte beitreten Tabellen

enter image description here

Ich möchte ein Mitglied belichten auf „intallations“, die mir eine Liste von „Modulen“, basierend auf der Join-Tabelle „installation_modules ", wie kann ich das machen ?

Ich möchte in der Lage sein

installations.Modules.Something() 

zu schreiben, ohne die Join-Tabelle in meinem Code zu verwenden.

Ich möchte auch "installation_type" direkt auf der Installation zuordnen, ist das möglich? Wenn ja wie?

+0

In Code Zuerst ist es ziemlich einfach. Sieht aber so aus, als ob du edmx benutzt? Laut [diesem Beitrag] (https://www.exceptionnotfound.net/entity-framework-for-beginners-creating-a-database-first-model/) sollte es möglich sein. Kann [dies] (https://msdn.microsoft.com/en-us/data/jj713299.aspx) kann helfen. –

Antwort

1

Entity Framework wird automatisch die viele-viele-Beziehung für Sie, verwalten, aber in der Regel die installation_modules Tabelle sollte nur zwei Spalten, installation_id und module_id mit, die der zusammengesetzten Primärschlüssel anstelle eines separaten Primärschlüssel wird. So Installation Modell/Klasse wird public virtual ICollection<Module> Modules {get; set;} haben und die Module Klasse wird public virtual ICollection<Installation> Installations {get; set;} Navigationseigenschaften für den einfachen Zugriff auf Entitäten haben.

Ich möchte auch "installation_type" direkt auf der Installation zuordnen, ist es möglich? Wenn ja wie?

Ja, es ist möglich. Sie können eine Navigationseigenschaft für InstallationType in Ihrer Installation Entität dafür haben.

public class Installation 
{ 
//....other properties 

[Column("installation_type_id")] 
public int InstallationTypeId {get; set;} 

[ForeignKey("InstallationTypeId")] 
public virtual InstallationType InstallationType{get; set;} 
} 
+0

Danke, ich habe die ID auf der Join-Tabelle entfernt und es funktioniert "out of the box", wenn ich mein Modell aktualisiere, habe ich jetzt eine Sammlung von Modulen auf meiner Installationsentität :) Hoffentlich bin ich immer noch im Design der db mit db-first Ansatz. Für die zweite Frage war meine Frage nicht klar genug, ich denke, was ich will, ist die Eigenschaft "Typ" der Entität "InstallationType" direkt auf meine "Installation" -Entität zugeordnet –

+1

_Was ich will, ist die Eigenschaft "Typ" der Entität "InstallationType" direkt auf meine "Installation" -Entität_ zugeordnet - dies ist über die Navigationseigenschaft zugänglich. Aber wenn Sie diese Typeigenschaft direkt benötigen, besteht eine Umgehungslösung darin, eine Eigenschaft zu haben: '[NotMapped] öffentliche Zeichenkette InstType {get {return this.InstallationType? .Type}}' – Developer

Verwandte Themen