Dado un EntityType, como "Contacto", ¿cómo puedo derivar de él el nombre del EntitySet al que pertenecería, es decir, la pluralización como "Contactos"?Obtener el nombre EntitySet de un EntityType en EF
Respuesta
Si ya tiene una entidad adscrita (obviamente no es necesario la primera línea, sólo tiene que utilizar su entidad existente):
Contact c = context.Contacts.Where(x => x.blah).FirstOrDefault();
string setName = c.EntityKey.EntitySetName;
O si no lo hace:
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();
Muy bien. Necesitaba esto para realizar personalizaciones adicionales de entidades POCO, como agregar métodos GetById() a todas las clases de entidad. –
Genius, he estado tratando de hacer esto por años, muchas gracias, +1 por una excelente respuesta –
Tenga en cuenta que las consultas de CSpace solo funcionan cuando se ha conectado a la base de datos, por lo que no funcionarán en escenarios en los que solo quiere consultar tipos directamente –
esta extensión puede ser útil
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;
}
}
y utilizarlo como:
db.AttachTo(db.GetEntitySetName<MyEntityType>(), myEntityInstance);
- 1. EF 4.1 EntityType no tiene clave - compuesto
- 2. EntityType 'ApplicantPosition' no tiene una clave definida
- 3. Entity Framework Code-First: defina la clave para este EntityType
- 4. EF-Code primer tipo complejo con una propiedad de navegación
- 5. IEnumerable a EntitySet
- 6. Entity Framework 4.3.1 -> 5.0 Excepción: "EntityType no tiene una clave definida. Defina la clave para este EntityType".
- 7. Obtener el nombre de un parámetro
- 8. ASP.NET MVC 3 EntityType no tiene una clave definida
- 9. Obtener objetos de una ObjectSet especificando un rango de EF
- 10. Repositorio genérico de EF obtener Id de entidad genérica nueva insertada
- 11. Obtener el nombre de PID?
- 12. ¿Cómo puedo obtener el nombre de un Objeto en Java?
- 13. Obtener el nombre de todos los DataMembers en un DataContract
- 14. ¿Cómo obtener delta de cambio de entidad en EF?
- 15. ¿Obtener el nombre y el apellido de un contacto en lugar del nombre único para mostrar?
- 16. EntitySet vs rendimiento de las consultas de mesa en LINQ2SQL
- 17. Lista genérica a la conversión de EntitySet
- 18. Mapeo y la información de metadatos no se puede conocer por EntityType Excepción
- 19. EntityType 'MyProfile' no tiene una clave definida. Definir la clave para este EntityType
- 20. Heredar una clase base común en el código EF primero
- 21. Código EF primero, ¿cómo registrar el mismo nombre de tabla con un esquema diferente?
- 22. RIA Services EntitySet no admite la operación 'Editar'
- 23. expresión LINQ miembro de obtener el nombre de columna
- 24. Encadenar las condiciones OR en EF 5.0
- 25. Obtener un rango con nombre de cadena en el libro de Excel cuando se duplica Nombre
- 26. Tipo de datos XML en EF 4.1 Código Primero
- 27. Obtener el nombre de clase de un módulo
- 28. ColdFusion: obtener el nombre de un archivo antes de subir
- 29. Agregar hijo al registro principal existente en el marco de la entidad
- 30. obtener el nombre de valor de namedtuple
Supongo que no tienes una instancia del objeto? – Nix
@Nix También tuve el mismo problema, mi Type era T param, ¿por lo que no había ninguna instancia del objeto? –
Tengo que comentar y gracias por esto, porque me encontré con el mismo problema EXACTO de 'Contactos' y 'Contacto' – cost