gpt4 book ai didi

c# - 使用 PropertyInfo 忽略属性

转载 作者:行者123 更新时间:2023-11-30 22:51:36 25 4
gpt4 key购买 nike

我想忽略属性信息如下的属性;

PropertyInfo propertyInfo = typeof(GLAccount).GetProperty("ExampleProp");
modelBuilder.Entity<GLAccount>().Ignore(g => propertyInfo);

上面的代码块给我以下错误;

The expression 'g => value(Dashboard.DAL.Context+<>c__DisplayClass16_0).propertyInfo' is not a valid property expression. The expression should represent a property: C#: 't => t.MyProperty'  VB.Net: 'Function(t) t.MyProperty'.'

我该如何解决这个问题?谢谢。

最佳答案

如果您使用的 API 需要表达式树,则需要手动构建 lambda:

var p = Expression.Parameter(typeof(GLAccount));
var body = Expression.Property(p, propertyInfo);
var lambda = Expression.Lambda<Func<GLAccount, SomeType>>(body, p);
modelBuilder.Entity<GLAccount>().Ignore(lambda);

不过,这里的问题是要知道 SomeType .我假设 Ignore(...)实际上是Ignore<TResult>(...)或类似的,其中 TResult需要与 SomeType 相同上面,这需要是 ExampleProp 的任何返回类型是。您可能需要使用 MakeGenericMethod在这里。

另请注意,如果您没有对 propertyInfo任何其他 , 你也可以使用 Expression.Property(p, "ExampleProp")作为捷径。

虽然... from these docs ,您可能能够简单地使用:

modelBuilder.Entity<GLAccount>().Ignore("ExampleProp");

关于c# - 使用 PropertyInfo 忽略属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59030906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com