Gegeben ein EntityType, wie "Kontakt", wie kann ich daraus den Namen des EntitySet ableiten, zu dem es gehören würde, d. H. Die Pluralisierung wie "Kontakte"?Holen Sie den EntitySet-Namen von einem EntityType in EF
Antwort
Wenn Sie bereits eine gebundene Einheit haben (natürlich müssen Sie nicht die erste Zeile, benutzen Sie einfach Ihre bestehende Einheit):
Contact c = context.Contacts.Where(x => x.blah).FirstOrDefault();
string setName = c.EntityKey.EntitySetName;
Oder wenn Sie dies nicht tun:
string className = typeof(Contact).Name
var container =
context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
string setName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == className
select meta.Name).First();
Sehr nett. Ich brauchte dies, um zusätzliche Anpassungen von POCO-Entitäten vorzunehmen, wie das Hinzufügen von GetById() -Methoden zu allen Entitätsklassen. –
Genie, ich habe versucht, dies seit Ewigkeiten zu tun, vielen Dank, +1 für eine gute Antwort –
Beachten Sie, dass CSpace Abfragen nur funktionieren, wenn Sie mit der Datenbank verbunden sind, so dass es in Szenarien nicht funktioniert, wo Sie gerade möchte Typen direkt abfragen. –
public static class MyExtensions
{
public static string GetEntitySetName<T>(this ObjectContext context)
{
string className = typeof(T).Name;
var container = context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
string entitySetName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == className
select meta.Name).First();
return entitySetName;
}
}
und es verwenden, wie nützlich sein
db.AttachTo(db.GetEntitySetName<MyEntityType>(), myEntityInstance);
- 1. Entity Framework 4.3.1 -> 5.0 Ausnahme: "EntityType keinen Schlüssel hat definiert Definieren Sie den Schlüssel für diese EntityType.." 4.3.1
- 2. Datenbank zuerst - EntityType xxx hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType
- 3. Holen Sie den XPath zu einem XElement?
- 4. EntityType 'IdentityUserLogin' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType
- 5. EntityType X hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diese EntityType
- 6. EntityType 'x' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diese EntityType
- 7. EntityType 'IdentityUserLogin' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType
- 8. Holen Sie den Laufwerksbuchstaben von einem Pfad String oder Fileinfo
- 9. Holen Sie sich den Rückgabewert von JOptionPane
- 10. Holen Sie den Dateipfad von jcombobox
- 11. Holen Sie Objekte aus einem ObjectSet durch einen Range in EF Angabe
- 12. Holen Sie den nächsten Artikel in LinkedHashMap?
- 13. Holen Sie den Preis von Amazon
- 14. Holen Sie sich den Prozessnamen von pid
- 15. Holen Sie Daten von einem reaktiven Behälter
- 16. AS3: Holen Sie den Durchschnitt aus einem Array
- 17. Holen Sie sich den Funktionscode in Matlab?
- 18. Holen Sie sich den Typ in Flex
- 19. Holen Sie das Verzeichnis von einem Dateipfad in Java (Android)
- 20. Holen Sie Webseiteninhalte von Firefox in einem C# -Programm
- 21. Holen Sie sich den Feldwert mit einem Cursor
- 22. Holen Sie den geänderten Formularfeldwert aus einem dynamischen modalen Fenster
- 23. Holen Sie den Typ von AnyObject dynamisch in Swift
- 24. Holen Sie den Rückgabewert von Async-Funktion in Javascript
- 25. Holen Sie den höchsten Wert von in Tabelle nach Klasse
- 26. Holen Sie sich den onclick von Glyphicon in EditorFor
- 27. Holen Sie den Wert von ng-Modell in ng-repeat
- 28. Legen Sie den Standardwert in EF Designer Datetime fest.
- 29. Holen Sie Zelleninhalt in einem Blatt zu einem anderen
- 30. Den Wert aus einem Textblock holen
Ich vermute, Sie haben keine Instanz des Objekts? – Nix
@Nix Ich hatte auch das gleiche Problem, mein Typ war T param, also gab es sicher keine Instanz des Objekts? –
Ich muss kommentieren und danke dafür, weil ich in der gleichen Ausgabe von 'Kontakte' und 'Kontakt' lief – cost