Using Entity Framework 5, database first.
Is it possible (at run time) to get the data type of the database column that an entity\'s property represents? The .net t
Use reflection on the entity to get the property info.
foreach (DbEntityEntry entity in entities)
{
foreach (string propertyName in entity.CurrentValues.PropertyNames)
{
var propertyInfo = entity.Entity.GetType().GetProperty(propertyName);
var propertyType = propertyInfo.PropertyType;
}
}
To get the data type of the particular column of the table:
[Assume: Entity prop class name: Vendors and column name ="VendorID"]
string columnTypName = (context.Vendors.EntitySet.ElementType.Members["VendorID"].TypeUsage.EdmType).Name;
To get all columns names and type of the columns dynamically:
[Param : tableName]
var columns = from meta in ctx.MetadataWorkspace.GetItems(DataSpace.CSpace)
.Where(m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)
from p in (meta as EntityType).Properties
.Where(p => p.DeclaringType.Name == tableName)
select new
{
colName = p.Name,
colType = p.TypeUsage.EdmType.Name
};