![](/img/trans.png)
[英]GetColumnName() in EF Core 6 returns property name not mapped column name
[英]Retrieve property name from Fluently mapped column name
背景
我有一个名为“ Dog”的类,它引用了另一个名为“ Tail”的类,该类具有一个名为“ Size”的属性。 因此,如果我想知道狗的尾巴尺寸,则为“ Dog.Tail.Size”。 完善。
我已经将它与FluentNHibernate映射为:
public class DogMap : ClassMap<Dog>
{
public DogMap()
{
... other things here
Component(x => x.Tail, t => {
t.Map(x => x.Size, "DG_TL_SIZE").Length(2).Not.Nullable();
}
}
}
问题
列名称为“ DG_TL_SIZE”,如何获取“ Dog.Tail.Size”? 我知道在拥有Dog.Tail.Size之后,可以获取"persistentClass.GetRecursiveProperty("Dog.Tail.Size")"
来检索该属性并使用它。
问题是我需要更改其值,因此我需要一个PropertyInfo,但是当我具有“ Dog.Tail.Size”时,这应该不难获得。
那么, 如何获得“ Dog.Tail.Size”?
您可以遍历所有属性,但是所提供的代码需要重构
foreach (var prop in persistentclass.PropertyClosureIterator)
{
IValue property = prop.Value;
if (prop.IsComposite)
{
var component = (NHibernate.Mapping.Component)prop.Value;
foreach (var prop2 in component.PropertyIterator)
{
foreach (var column in prop2.ColumnIterator)
{
if (column.Text == "my Column")
{
// do something with the 'prop2'
}
}
}
}
else
{
foreach (var column in prop.ColumnIterator)
{
if (column.Text == "my Column")
{
// do something with the 'prop'
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.