In EF, get the name of an EntitySet from an EntityType.

entity-framework

Question

How can I determine the name of the EntitySet to which a given EntityType would belong, i.e. the pluralization such as "Contacts," given an EntityType like "Contact"?

1
16
4/21/2010 8:44:09 PM

Accepted Answer

If you already have an associated entity (use your current entity instead of the first line, of course):

  Contact c = context.Contacts.Where(x => x.blah).FirstOrDefault();
  string setName = c.EntityKey.EntitySetName;

If you choose not to:

 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();
34
2/21/2014 9:05:46 AM

Popular Answer

This add-on might be beneficial.

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;
    }
}

Use it as follows:

db.AttachTo(db.GetEntitySetName<MyEntityType>(), myEntityInstance);


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow