In EF 6.1 the mapping API was introduced where we could finally get access to table names and column names. Getting the table name is a very nice change in EF Core, but I have not yet uncovered how to get the column names.
For anyone interested here is how I got the table name in the latest version (RC1)
context.Model.FindEntityType(typeof(T)).SqlServer().TableName
What is the current method to get column names or is this not available yet?
var columnNames = ctx.Model.FindEntityType(typeof (T))
.GetProperties().Select(x => x.SqlServer().ColumnName)
.ToList();
Also
var columnNames = ctx.Model.FindEntityType(typeof (T))
.GetProperties().Select(x => x.Relational().ColumnName)
.ToList();
In EF Core 3.X, .Relational()
and .SqlServer()
have been replaced and you can simply use:
var columnNames = ctx.Model.FindEntityType(typeof (T))
.GetProperties().Select(x => x.GetColumnName())
.ToList();
This version doesn't assume SqlServer
and can work as well with Npgsql
provider as long as data store is relational.
var columnNames = dbContext.Model.FindEntityType(typeof(T))
.GetProperties().Select(x => x.Relational().ColumnName);