我正在使用 ORM linq2db。
我们需要在运行时设置列名。这就是为什么我不能使用POCO-Class中的属性,而是使用 Fluent Mapping Api(据我所知没有记录)。
因为列名将在运行时确定,所以我想遍历我的实体中的所有属性并设置Columnname
.
在 EF Core 3.x 中,这看起来像这样:
foreach (var property in modelBuilder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties()))
{
property.SetColumnname(columnNameDict[property.Name]);
}
是否有可能迭代我的模型中的所有属性,比如在 EF Core 中?
在linq2db中设置属性的属性我必须使用这样的代码:
builder
.Entity<Addresses>()
.HasTableName("ADDRESSES")
.Property(x => x.Company) // This is the Membergetter, which i can't use in a foreach afaik.
.HasColumnName("TEXT1")
要访问我必须使用的属性 ID "x => x.ID"(Expression<Func<Addresses, object>> memberGetter)
,但是当我遍历属性时,我不知道如何在不使用此表达式(memberGetter)的情况下选择正确的属性(PropertyMappingBuilder)或如何在 foreach 中设置此表达式。有这样的字符串重载.Property("Company")
吗?我找不到任何东西。
我用反射尝试过,但表达式部分不起作用;):
foreach (var property in typeof(Addresses).GetProperties())
{
var fieldInfo = adressenInfo.GetFieldByUser(property.Name);
adressenBuilder.Property(a => property.GetValue(a)) // this line doesn't work
.HasColumnName(fieldInfo.LogicalName)
.HasDbType(fieldInfo.DataBaseType);
}
欢迎任何想法!谢谢 :)