Ich beginne gerade mit dem Entity Framework von Microsoft, benutze es für ein MVC-Projekt, da MS es wirklich zu pushen scheint, und ich stoße auf einige Probleme. In meiner Datenbank gibt es mehrere Lookup-Tabellen, die über Fremdschlüssel mit einer einzigen Tabelle verknüpft sind. Innerhalb des Entity-Frameworks versuche ich diese zu kombinieren, so dass ich eine vereinfachte Ansicht für diese Daten in meinem Modell habe. Dies scheint jedoch aus der Sicht des Designers nicht möglich zu sein. Gibt es etwas Offensichtliches, das mir fehlt? Gibt es eine Möglichkeit, die edmx-Datei manuell zu bearbeiten, um diese Art von Modell zu erstellen?Verarbeiten von Lookup-Tabellen in Entity Framework v1
Antwort
Im Moment sind Fremdschlüssel und Lookup-Tabellen in Entity Framework eine PAIN.
EF mit LINQ macht Ihre Daten super-leicht bekommen, und auf der Oberfläche es sieht einfach zu aktualisieren, aber mit Lookup-Tabellen es schwierig wird (vorerst ... weiterlesen ...)
Ich bin nicht sicher, wie Sie Ihre Nachschlagetabellen zu einer einzigen Tabelle "kombinieren" würden. Wenn jede Tabelle einen anderen Typ von "Lookup-Entity" enthält, sollten sie im IMHO separat in Ihrem EDM dargestellt werden. Ich nehme an, Sie haben Kopfschmerzen Kopfschmerzen Aktualisierung der Fremdschlüssel eines Datensatzes zu den Lookup-Tabellen. Das ist, weil es Kopfschmerzen ist.
Ändern Fremdschlüsselwerte:
MyDBEntities _db = new MyDBEntities();
//get a Person
MyDBEntities.Person person = (from p in _db.Persons
where p.Id = 1
select p).First();
// This sets the foreign key value in the Person table on the PersonType field
person.PersonTypeReference = new EntityKey("MyDBEntities.PersonType", "PersonTypeId", 3)
Die next release version des Entity Framework wird ein neues Konzept namens "FK Verbände." Dadurch wird der Sinn des Festlegens des Fremdschlüsselwerts wiederhergestellt, anstatt einen EntityKey erstellen und festlegen zu müssen.
HTH.
Korrektur: Es gibt bereits eine "Release-Version" in .NET 3.5 SP1. Es wird eine andere Version geben, die in .NET 4.0 geliefert wird. Entschuldigung, ich bin wählerisch um dieses Zeug, es ist nur, weil es die irrige Vorstellung verewigt, dass die EF noch nicht ausgeliefert hat;) –
Ah ok ich sehe. Das beantwortet meine Frage ziemlich genau. Aus Gründen der Übersichtlichkeit, was ich mit dem Kombinieren meinte, wurde im Wesentlichen eine Ansicht im Modell erstellt (ich bin ziemlich neu bei ORM, so dass einige meiner Terminologie aus sein könnten), basierend auf all diesen Nachschlagetabellen. Die Datenbank, mit der ich arbeite, ist in einer stark normalisierten Art strukturiert, so dass es Nachschlagetabellen für Staat, Land und alles andere gibt. –
PersonTypeReference ist vermutlich eine EntityReference? Ist EntityKey wirklich EntityReference zuweisbar? –