Dato un EntityType, come "Contact", come posso ricavarne il nome del EntitySet a cui apparterrebbe, cioè la pluralizzazione come "Contacts"?Ottieni il nome EntitySet da EntityType in EF
risposta
Se si dispone già di un soggetto annesso (ovviamente non è necessario la prima linea, basta usare l'un'entità esistente):
Contact c = context.Contacts.Where(x => x.blah).FirstOrDefault();
string setName = c.EntityKey.EntitySetName;
O se non lo fai:
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();
Molto bello. Avevo bisogno di questo per personalizzare ulteriormente le entità POCO, come aggiungere metodi GetById() a tutte le classi di entità. –
Genius, ho cercato di farlo per anni, grazie mille, +1 per un'ottima risposta –
Nota che le query di CSpace funzionano solo quando sei connesso al database, quindi non funzionerà in scenari in cui hai solo vuoi interrogare i tipi direttamente. –
questa estensione può essere utile
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;
}
}
e usarlo come:
db.AttachTo(db.GetEntitySetName<MyEntityType>(), myEntityInstance);
- 1. Ottieni il nome da PID?
- 2. EntityType 'x' non ha una chiave definita. Definire la chiave per questo EntityType
- 3. Ottieni il nome file suggerito da org.apache.http.HttpResponse
- 4. Ottieni il nome classe da un modulo
- 5. Ottieni il nome del file da FileOutputStream
- 6. Ottieni nome tabella da ActiveRecord
- 7. Ottieni il nome chiave jsonarray
- 8. EntityType 'Category' non ha una chiave definita. Definire la chiave per questo EntityType
- 9. Ottieni il nome dell'utente corrente
- 10. Ottieni il nome dell'ambiente corrente
- 11. Ottieni il nome utente in Autenticazione moduli
- 12. Ottieni il nome della superclasse in ES6
- 13. Ottieni il nome dell'elemento principale in XPath
- 14. Ottieni il nome dell'applicazione attivo in Android
- 15. Ottieni il nome dell'elemento modulo
- 16. Ottieni il nome della sottoclasse?
- 17. Ottieni il nome chiave JSON
- 18. Ottieni il nome file e l'estensione da un percorso assoluto
- 19. iPhone - Ottieni il nome della città da Latitude e Longtiude
- 20. Ottieni il nome della classe padre da bambino con ES6?
- 21. Ottieni nome file da percorso stringa?
- 22. Ottieni cookie da CookieJar per nome
- 23. Ottieni il nome del processo da pid o handle
- 24. Ottieni solo il nome di dominio da un URL?
- 25. Ottieni il percorso da href in Javascript
- 26. Entity Framework 4.3.1 -> 5.0 Eccezione: "EntityType non ha alcuna chiave definita. Definire la chiave per questo EntityType."
- 27. Ottieni il nome classe dalla classe estesa
- 28. ASP.NET MVC 3 EntityType non ha una chiave definita
- 29. EF-Code primo tipo complesso con una proprietà di navigazione
- 30. Symfony2 Ottieni il nome del percorso dall'URL
Immagino che tu non abbia un'istanza dell'oggetto? – Nix
@Nix Avevo anche lo stesso problema, il mio tipo era param T, quindi non c'era nessuna istanza dell'oggetto? –
Devo commentare e ringraziare per questo, perché mi sono imbattuto nello stesso numero ESATTO di "Contatti" e "Contatti" – cost