C# linq2db如何在Fluent映射中迭代属性?
我正在使用ORM。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
我们需要在运行时设置列名。 这就是为什么我不能使用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来稍微调整您的代码示例,因为我迭代了这些属性。但是再次感谢,代码工作得很好!