Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EF Core column name from mapping api

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?

like image 308
Matt Sanders Avatar asked Sep 18 '25 18:09

Matt Sanders


2 Answers

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();
like image 58
Jonathan Magnan Avatar answered Sep 22 '25 06:09

Jonathan Magnan


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);
like image 25
Krzysztof Branicki Avatar answered Sep 22 '25 08:09

Krzysztof Branicki