Entity framework core 映射api中的EF核心列名

Entity framework core 映射api中的EF核心列名,entity-framework-core,Entity Framework Core,在EF 6.1中引入了映射API,我们最终可以访问表名和列名。获取表名是EF Core中一个非常好的更改,但我还没有揭示如何获取列名 对于这里感兴趣的人,我将介绍如何在最新版本(RC1)中获得表名 当前获取列名的方法是什么?或者该方法是否还不可用 var columnNames = ctx.Model.FindEntityType(typeof (T)) .GetProperties().Select(x => x.SqlServer(

在EF 6.1中引入了映射API,我们最终可以访问表名和列名。获取表名是EF Core中一个非常好的更改,但我还没有揭示如何获取列名

对于这里感兴趣的人,我将介绍如何在最新版本(RC1)中获得表名

当前获取列名的方法是什么?或者该方法是否还不可用

var columnNames = ctx.Model.FindEntityType(typeof (T))
                           .GetProperties().Select(x => x.SqlServer().ColumnName)
                           .ToList();

在EF Core 3.X中,您可以简单地使用:

var columnNames = ctx.Model.FindEntityType(typeof (T))
                           .GetProperties().Select(x => x.GetColumnName())
                           .ToList();

此版本不采用
SqlServer
,只要数据存储是关系型的,就可以与
Npgsql
提供程序一起工作

var columnNames = dbContext.Model.FindEntityType(typeof(T))
                  .GetProperties().Select(x => x.Relational().ColumnName);

你能解释一下它是如何解决这个问题的吗?这看起来很完美,我今晚晚些时候会检查一下,看看它是如何工作的。顺便说一下,我是z扩展的粉丝。:)美好的你知道我还有一个实体框架库吗?我相信你也会成为它的粉丝;)工作得很好。我不知道你的EF是开源的。因此,通常人们会尝试将所有内容打包并隐藏底层api,我喜欢您只扩展对象的风格。这也是我喜欢的方法。最后,我这样做是为了获取某些内容的属性映射:)var propertiesMap=context.Model.findentitype(typeof(T)).GetProperties().ToDictionary(p=>p.Name,p=>p.SqlServer().ColumnName);是的,扩展使它使用起来非常简单,而且您觉得它是实体框架的一部分。我尽可能多地尝试开源,但仍有一部分是为了知识产权而隐藏的。
var columnNames = ctx.Model.FindEntityType(typeof (T))
                           .GetProperties().Select(x => x.GetColumnName())
                           .ToList();
var columnNames = dbContext.Model.FindEntityType(typeof(T))
                  .GetProperties().Select(x => x.Relational().ColumnName);