C# linq2db如何在Fluent映射中迭代属性?

C# linq2db如何在Fluent映射中迭代属性?,c#,orm,mapping,fluent,linq2db,C#,Orm,Mapping,Fluent,Linq2db,我正在使用ORM。 我们需要在运行时设置列名。 这就是为什么我不能使用POCO类中的属性,而是使用Fluent Mapping Api(据我所知,该Api没有文档记录) 因为列名将在运行时确定,所以我希望迭代实体中的所有属性,并设置Columnname 在EF Core 3.x中,这看起来像这样: foreach (var property in modelBuilder.Model.GetEntityTypes() .SelectMany(t => t.GetProper

我正在使用ORM。
我们需要在运行时设置列名。 这就是为什么我不能使用POCO类中的属性,而是使用Fluent Mapping Api(据我所知,该Api没有文档记录)

因为列名将在运行时确定,所以我希望迭代实体中的所有属性,并设置
Columnname

在EF Core 3.x中,这看起来像这样:

foreach (var property in modelBuilder.Model.GetEntityTypes()
        .SelectMany(t => t.GetProperties()))
{
   property.SetColumnname(columnNameDict[property.Name]);
}
builder
    .Entity<Addresses>()
    .HasTableName("ADDRESSES")
    .Property(x => x.Company) // This is the Membergetter, which i can't use in a foreach afaik.
    .HasColumnName("TEXT1")
是否有可能迭代我的模型中的所有属性,比如efcore

在linq2db中,要设置属性的属性,我必须使用如下代码:

foreach (var property in modelBuilder.Model.GetEntityTypes()
        .SelectMany(t => t.GetProperties()))
{
   property.SetColumnname(columnNameDict[property.Name]);
}
builder
    .Entity<Addresses>()
    .HasTableName("ADDRESSES")
    .Property(x => x.Company) // This is the Membergetter, which i can't use in a foreach afaik.
    .HasColumnName("TEXT1")

欢迎任何意见!谢谢:)

您需要为
Parameter()
方法手动生成适当的LambdaExpression

var param=Expression.Parameter(typeof(Addresses));
属性(Expression.Lambda(
Expression.Convert(Expression.Field(param,fieldInfo),typeof(object)),
参数)。。。

谢谢您的回答!我只需要使用Expression.Property(param,Property)而不是Express.Field来稍微调整您的代码示例,因为我迭代了这些属性。但是再次感谢,代码工作得很好!